当required =“true”</p:inpttext>时,Ajax事件永远不会在<p:inpttext>中触发

时间:2011-07-12 14:56:44

标签: jsf-2 primefaces

使用时在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”?

1 个答案:

答案 0 :(得分:3)

这可能是因为当您获得焦点到文本字段时,会发生ajax事件,该事件会回发页面上组件的ViewState。

当它执行此操作时,它会尝试将文本字段的当前值设置为空#{backingBean.value},从而导致抛出ValidatorException。由于发生此验证错误,因此永远不会触发操作事件#{backingBean.something()}

尝试将属性immediate="true"添加到<p:ajax>标记,看看是否允许在验证阶段之前触发事件。