如何在单击特定按钮时跳过验证?

时间:2011-05-19 18:05:02

标签: validation jsf button jsf-2

我在一个字段上有一个带验证器的表单。我有两个h:commandButton s:确定和取消。当我输入错误的数据并单击取消时,我会收到验证消息。当我点击取消时,我必须做什么验证器不运行?

1 个答案:

答案 0 :(得分:57)

如果您没有使用ajax,或者仍然使用JSF 1.x,并且您确实需要在cancel()方法中调用业务操作(即只是重新加载页面不够),那么您最好赌注是将immediate="true"添加到按钮。这样,处理时将跳过所有没有immediate="true"的输入字段。

<h:commandButton value="Cancel" action="#{bean.cancel}" immediate="true" />

在JSF 2.x上,更好的方法是按<f:ajax>提交表单,默认情况下只处理@this而不是@form

<h:commandButton value="Cancel" action="#{bean.cancel}">
    <f:ajax />
</h:commandButton>

如果您想在此处导航到其他页面,请在?faces-redirect=true方法的结果中添加cancel()

或者,如果您实际上根本不需要调用任何业务操作,那么只需使用<h:button>,其中您直接指定(隐式)导航案例结果。

<h:button value="Cancel" outcome="previouspage" />

这基本上会通过GET请求重新加载页面。 JSF 1.x中不存在<h:button>,但您也可以使用纯HTML + JS。

另见: