单击特定按钮时如何跳过验证?
我有一张在一个字段上带有验证器的表单。我有两个 h:commandButton
:确定 和取消。当我输入错误的数据并单击取消时,我收到一条验证消息。当我点击取消时,我必须做什么才能使验证器不运行?
I have a form with a validator on one field. I have two h:commandButton
s: Ok and Cancel. When I input wrong data and click Cancel, I get a validation message. What must I do that validator don't run when I click cancel?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您没有使用 ajax,或者仍在使用 JSF 1.x,并且您确实需要在
cancel()
方法中调用业务操作(即仅重新加载页面是不够的),那么最好的选择是将immediate="true"
添加到按钮。这样,所有没有immediate="true"
的输入字段都将在处理中被跳过。在 JSF 2.x 上,更好的方法是通过
提交表单,默认情况下仅处理@this
而不是@form< /代码>。
如果您想导航到此处的另一个页面,请将
?faces-redirect=true
添加到cancel()
方法的结果中。或者,如果您实际上根本不需要调用任何业务操作,则只需使用
即可直接指定(隐式)导航案例结果。这基本上将通过 GET 请求重新加载页面。 JSF 1.x 中不存在
,但您也可以使用纯 HTML+JS。另请参阅:
In case you aren't using ajax, or are still on JSF 1.x, and you really need to invoke a business action in
cancel()
method (i.e. just reloading the page is insufficient), then your best bet is to addimmediate="true"
to the button. This way all input fields which don't haveimmediate="true"
will be skipped in processing.On JSF 2.x, much better is to submit the form by
<f:ajax>
, which by default only processes@this
instead of@form
.If you want to navigate to another page here, add
?faces-redirect=true
to the outcome in thecancel()
method.Or, if you actually don't need to invoke any business action at all, then just use
<h:button>
wherein you directly specify the (implicit) navigation case outcome.This will basically reload the page by a GET request. The
<h:button>
doesn't exist in JSF 1.x, but you can also just use plain HTML+JS for that.See also: