Dan*_*ger 6 salesforce visualforce
我有一个Visualforce页面使用自定义控制器,用于编辑机会下的多个记录.
我想创建一个从Opportunities到此Visualforce页面的自定义按钮或链接.
目前链接如下:
/apex/ExamplePage?oppId={!Opportunity.Id}
Run Code Online (Sandbox Code Playgroud)
这在开发沙箱中工作正常,但是当它作为托管包的一部分部署时,链接会断开,因为页面引用没有名称空间前缀.
我在Force.com讨论板上发现了托管包重定向问题,暗示应该可以使用$ Page来引用URL中的Visualforce页面.例如
{!URLFOR($Page.MyExamplePage,'',[objectId = campaign.id])}
Run Code Online (Sandbox Code Playgroud)
但这样做只会给我语法错误:
错误:字段$ Page.MyExamplePage不存在.检查拼写.
该帖子的另一部分建议使用Apex类和Execute Javascript来解决它.但在我看来,这只是将名称空间问题转移到了Javascript中.
如何安全地引用Visualforce页面以在托管包内外工作?
最好从Apex PageReference返回值执行此操作.这样的东西会起作用:
public PageReference returnPage()
{
return Page.MyExamplePage;
}
Run Code Online (Sandbox Code Playgroud)
然后从Visualforce调用它:
<apex:commandButton value="Go To New Page" action="{!returnPage}"/>
Run Code Online (Sandbox Code Playgroud)
Apex Page调用将为您处理翻译.
[编辑]
像这样创建一个简单的Visualforce页面:
<apex:page standardController="Opportunity" extensions="TheController" action="{!returnPage}"/>
Run Code Online (Sandbox Code Playgroud)
将上面的returnPage()方法添加到新的TheController(或其他)类中.它甚至不需要构造函数.该类可以如下所示:
public TheController
{
public PageReference returnPage()
{
return Page.MyExamplePage;
}
}
Run Code Online (Sandbox Code Playgroud)
然后从商机设置页面转到按钮和链接,并创建一个新的自定义Visualforce按钮,选择刚刚创建的新页面.
应该这样做.
| 归档时间: |
|
| 查看次数: |
30979 次 |
| 最近记录: |