JSF2.0中混合Ajax和完整请求的java
给我带来问题的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错误监听器,以便被触发,并且不会出现令人讨厌的问题:
谢谢你的意见
# 1 楼答案
如果要添加一些监视器,请执行以下操作:
# 2 楼答案
只需在此处为后代记录这一点,但在JavaScript中创建一个错误处理程序,然后从
f:ajax
标记引用它,将抑制错误警报,并导致调用错误处理程序时返回错误消息。问题中提到的Jim Driscoll在文章中描述了这种行为,但没有具体说明。我已经验证了它的工作原理:function onAjaxError( error ) { console.log( error.description ); }
<f:ajax onerror="onAjaxError" ...>
# 3 楼答案
您需要使用命令按钮来触发ajax请求
那些
<f:ajax>
侦听器不是必需的。在吉姆的文章中,他们只是作为一个例子来说明种族状况。哪个先被调用?显然,您希望首先调用侦听器在this tutorial的this chapter中可以找到几乎相同形式的实例。只使用了
blur
而不是valueChange
,因为当模糊保持为空的required="true"
字段时,valueChange
将不会被调用,这会导致“Value is required”消息永远不会显示在这样的字段上