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

Validation 单击特定按钮时如何跳过验证?,validation,jsf,button,jsf-2,Validation,Jsf,Button,Jsf 2,我有一个表单,在一个字段上有一个验证器。我有两个h:commandButtons:Ok和Cancel。当我输入错误的数据并单击“取消”时,我会收到一条验证消息。如果您没有使用ajax,或者仍然使用JSF 1.x,并且您确实需要在cancel()方法中调用业务操作(即,仅重新加载页面是不够的),那么您最好的选择是在按钮中添加immediate=“true”。这样,在处理过程中将跳过所有没有immediate=“true”的输入字段 <h:commandButton value="C

我有一个表单,在一个字段上有一个验证器。我有两个
h:commandButton
s:Ok和Cancel。当我输入错误的数据并单击“取消”时,我会收到一条验证消息。如果您没有使用ajax,或者仍然使用JSF 1.x,并且您确实需要在
cancel()
方法中调用业务操作(即,仅重新加载页面是不够的),那么您最好的选择是在按钮中添加
immediate=“true”
。这样,在处理过程中将跳过所有没有
immediate=“true”
的输入字段

<h:commandButton value="Cancel" action="#{bean.cancel}" immediate="true" />
如果要导航到此处的其他页面,请在
cancel()
方法中将
?faces redirect=true
添加到结果中

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

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

这将基本上通过GET请求重新加载页面。jsf1.x中不存在
,但是您也可以使用纯HTML+JS来实现这一点

另见:

跟进:如果我有(例如,
@BalusC),怎么做?你知道跳过验证阶段但处理更新模型值阶段的方法吗?这在JSF2中是可能的吗?@shoppingdconut是的,在JSF2中可以通过仅删除PhaseListener类中的PROCESS\u VALIDATIONS阶段的验证器来实现
<h:button value="Cancel" outcome="previouspage" />