点击特定button时如何跳过validation?
我在一个字段上有一个validation器的表单。 我有两个h:commandButton
s:确定并取消。 当我input错误的数据,然后单击取消我得到一个validation消息。 当我点击取消时,我必须做什么validation器不运行?
如果你不使用ajax,或者仍然使用JSF 1.x,并且你确实需要在cancel()
方法中调用一个商业行为(即只是重新加载页面是不够的),那么你最好的办法就是直接添加immediate="true"
的button。 这样,所有没有immediate="true"
input字段将被跳过处理。
<h:commandButton value="Cancel" action="#{bean.cancel}" immediate="true" />
在JSF 2.x中,更好的方法是通过<f:ajax>
来提交表单,默认情况下只处理@form
@this
而不是@form
。
<h:commandButton value="Cancel" action="#{bean.cancel}"> <f:ajax /> </h:commandButton>
如果要导航到另一个页面,请在cancel()
方法中将?faces-redirect=true
到结果中。
或者,如果您实际上不需要调用任何业务操作,那么只需使用<h:button>
其中您直接指定(隐式)导航案例结果。
<h:button value="Cancel" outcome="previouspage" />
这将基本上通过GET请求重新加载页面。 JSF 1.x中不存在<h:button>
,但也可以使用纯HTML + JS。
也可以看看:
- 为什么“直接”属性添加到EditableValueHolders?
- 如何在JSF中导航? 如何使URL反映当前页面(而不是以前的页面)
- 如何让validation取决于按下的button?