使用时在PrimeFaces中:
<p:inputText required="true"
requiredMessage="message"
value="#{backingBean.value}">
<p:ajax event="focus"
update="infoText"
listener="#{backingBean.something()}" />
</p:inputText>
Ajax事件永远不会被触发。 但是,如果我删除required =“true”,一切正常,事件就会触发。
有谁能告诉我如何使用p:inputText和p:ajax和required =“true”?
答案 0 :(得分:3)
这可能是因为当您获得焦点到文本字段时,会发生ajax事件,该事件会回发页面上组件的ViewState。
当它执行此操作时,它会尝试将文本字段的当前值设置为空#{backingBean.value}
,从而导致抛出ValidatorException。由于发生此验证错误,因此永远不会触发操作事件#{backingBean.something()}
。
尝试将属性immediate="true"
添加到<p:ajax>
标记,看看是否允许在验证阶段之前触发事件。