给我带来问题的 JSF 代码如下:
<h:panelGrid columns="3">
<!-- Minimum Password Length -->
<h:outputText value="#{i18n['xxx']}:" />
<h:inputText id="minLength"
value="#{passwordPolicies.minLength.paramValue}"
required="true">
<f:validateLongRange minimum="1"/>
<f:ajax event="valueChange"
render="@this minLengthMessage"
listener="passwordPolicies.testListener"/>
</h:inputText>
<h:message id="minLengthMessage"
for="minLength"
errorClass="error"
tooltip="true"/-->
<!-- Many other validation fields -->
<h:panelGrid/>
首先,我有一个非常相似的问题:f:ajax listener never fired .我必须在我的 JSF 页面上结合 Ajax 和完整请求。 Jim Driscoll @ java.net说为了让这两个工作,必须设置一个 Ajax 错误监听器?这与 ajax 标记的 listener 属性有很大不同吗?
现在,我知道我可以尝试 Primefaces p:inputText 和 p:ajax 标签,但这些需要我为所有经过验证的字段单独监听。有没有办法修复 f:ajax 错误监听器,以便被触发并且不会得到讨厌的东西:
感谢任何输入!
最佳答案
您需要让您的命令按钮改为触发 ajax 请求。
<h:commandButton value="Submit" action="#{bean.submit}">
<f:ajax execute="@form" render="@form" />
</h:commandButton>
那些<f:ajax>
听众不是强制性的。它们只是在 Jim 的文章中用作示例来说明竞争条件。哪个先被调用?显然,您希望首先调用监听器。
可以在this chapter中找到几乎同一种形式的实际例子。的 this tutorial .只有blur
被用来代替 valueChange
,因为 valueChange
模糊 required="true"
时不会调用保持为空的字段导致“需要值”消息永远不会显示在此类字段上。
关于java - 在 JSF 2.0 中混合 Ajax 和完整请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262897/