我知道这是如何保存记录
<apex:commandButton action="{!save}" value="Save"/>
我想要一个按钮不保存当前记录(即取消)并导航到保存记录列表(即该对象类型的对象列表)。
像这样......
<apex:commandButton action="{!cancel}" value="Cancel"/>
答案 0 :(得分:9)
对象的列表视图是您的基本URL /对象/ o的3个字母前缀,例如:
https://na1.salesforce.com/a0C/o
因此,您可以创建一个操作方法,该方法返回带有相应网址的Pagereference
并设置为重定向(pr.setRedirect(true)
)。
或者,您可以将控制器用作标准控制器的扩展,只需call cancel on the standard controller:
// controller extension
public class TimeSheetExtension
{
ApexPages.standardController m_sc = null;
public TimeSheetExtension(ApexPages.standardController sc)
{
m_sc = sc;
}
public PageReference doCancel()
{
return m_sc.cancel();
}
}
// page
<apex:commandButton action="{!doCancel}" value="Cancel"/>
请注意,这并不一定会带您进入列表视图,它会返回您在访问VF页面之前查看的最后一页。
答案 1 :(得分:7)
您还应该将“即时”标记添加到“取消”按钮,以便在执行“取消”操作之前表单不会运行任何验证。
<apex:commandButton action="{!cancel}" immediate="true" value="Cancel"/>
答案 2 :(得分:1)
在应用取消操作visualforce时,您应该停止表单验证。使用下面任何一种方法根据您的要求停止表单验证。
方法1:
使用
html-5 in docforce in visualforce page
意味着你应该在取消按钮中使用 html-formnovalidate 和immediate
。例如
<apex:commandButton action="{!cancel}" value="Cancel" immediate="true"
html-formnovalidate="formnovalidate" />
方法2:
您应该使用immediate
关键字才需要停止表单验证。例如
<apex:commandButton action="{!cancel}" value="Cancel" immediate="true"/>
答案 3 :(得分:0)
其他答案之一建议调用标准控制器的取消操作,因此我想对此进行扩展,因为它引导我朝着解决类似问题的方向前进。
如果您想在不刷新整个页面的情况下取消作为ajax请求的编辑,请将该操作声明为void并且不返回页面引用,但仍会在标准控件上调用“取消”操作。确保命令按钮指定了 rerender 属性。
// controller extension
public class TimeSheetExtension
{
ApexPages.standardController m_sc = null;
public TimeSheetExtension(ApexPages.standardController sc)
{
m_sc = sc;
}
public void doCancel()
{
m_sc.cancel();
}
}
// page
<apex:commandButton action="{!doCancel}" value="Cancel" rerender="container_id"/>