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

发布于 2024-11-08 11:53:41 字数 153 浏览 0 评论 0原文

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

I have a form with a validator on one field. I have two h:commandButtons: 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执手闯天涯 2024-11-15 11:53:41

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

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

在 JSF 2.x 上,更好的方法是通过 提交表单,默认情况下仅处理 @this 而不是 @form< /代码>。

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

如果您想导航到此处的另一个页面,请将 ?faces-redirect=true 添加到 cancel() 方法的结果中。

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

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

这基本上将通过 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 add immediate="true" to the button. This way all input fields which don't have immediate="true" will be skipped in processing.

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

On JSF 2.x, much better is to submit the form by <f:ajax>, which by default only processes @this instead of @form.

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

If you want to navigate to another page here, add ?faces-redirect=true to the outcome in the cancel() 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.

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

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:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文