jsf-2 - Ajax 事件永远不会在 <p :inptText> when required ="true" 中触发

标签 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"一起使用?

最佳答案

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

当它这样做时,它试图将文本字段的当前值设置为 #{backingBean.value}这是空的,导致抛出 ValidatorException。因为这个验证错误发生了 Action 事件 #{backingBean.something()}永远不会被解雇。

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

关于jsf-2 - Ajax 事件永远不会在 <p :inptText> when required ="true" 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666263/

相关文章:

jsf - 如何获取最初请求的页面的url?

jsf - 必须按两次命令按钮

jsf-2 - PrimeFaces 从延迟加载数据表中导出数据

jsf - PrimeFaces 面板网格

java - JSF2 - 为什么渲染响应不重新渲染组件设置?

jsf - 如何在不使用 HTML 表单的情况下以编程方式将 POST 请求发送到 JSF 页面?

jsf-2 - 无法覆盖验证错误消息

java - p :commandButton in p:dialog does not call actionListener method

jsf - 如何使用 <p :media>? 绑定(bind)动态内容

java - 面组件未显示