【发布时间】:2011-03-10 16:44:50
【问题描述】:
给我带来问题的 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 命令按钮时?
-
嗨,是的,它发生在我按下非 Ajax 按钮时,它是随机发生的,例如当竞争条件导致 Jim Driscoll 在我发布的链接中提到的两个原因发生时。
-
Jim 告诉在命令按钮中使用
<f:ajax>来解决此问题。侦听器不是强制性的,它们只是说明竞争条件的示例。
标签: java ajax jsf jsf-2 listener