【问题标题】:Ajax event never fires in <p:inptText> when required="true"当 required="true" 时,Ajax 事件永远不会在 <p:inputText> 中触发
【发布时间】:2011-10-03 17:19:09
【问题描述】:

在我使用 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" 一起使用?

【问题讨论】:

  • h:messagep:growl 添加到组件以查看错误。我怀疑你有一个validation error。把immediate=true放到inputText里看看能不能解决这个问题。

标签: jsf-2 primefaces


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2011-11-19
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多