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



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

如果您没有使用 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>

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

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

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

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

另请参阅:

  • 为什么将"即时"属性添加到 EditableValueHolders?
  • 如何在 JSF 中导航?如何使URL反映当前页面(而不是上一个页面)
  • 如何让验证取决于按下的按钮?

相关内容

  • 没有找到相关文章

最新更新