【问题标题】:why p:commandButton inside p:dialog does not fire actionListener?为什么 p:dialog 中的 p:commandButton 不会触发 actionListener?
【发布时间】:2011-07-18 15:26:40
【问题描述】:
<h:form prependId="false">

<p:dialog modal="true">

<p:commandLink ajax="true" value="ok" actionListener="Bean.listenerMethod"/>

</p:dialog>

</h:form>

我在表单中也有一些其他控件。单击链接时,未触发该侦听器。可能是什么问题?请帮忙!

【问题讨论】:

  • 这是准确的代码吗?有一个非常明显的错误,但我不想为明显队长效力。
  • 对不起,我用 commandLink 代替了 commandButton。那是错误 BalusC 吗?
  • 不,您的 actionListener 不是方法表达式。这是一个纯字符串。
  • 我之前使用过这个表示法(Bean.listenerMethod") 来调用监听器。它起作用了。你的意思是正确的表示法是“Bean.listenerMethod()”吗?

标签: jsf jsf-2 primefaces


【解决方案1】:

你应该使用&lt;h:commandLink action="... /&gt; 而不是&lt;p:commandLink actionListener="... /&gt;

例子:

<h:commandLink id="elimina"
   action="#{listaBonificiModel.eliminaSelezionato()}"
   update="@(form)" oncomplete="PF('bonificoDialog').hide()"
   value ="Elimina" />

【讨论】:

    【解决方案2】:

    试试

    <h:form id="mainform">
        __________
        __________
        <p:dialog id="test" widgetVar="Testing">
           <h:form>
              <h:panelGrid columns="1">
                 _________
                 _________
              </h:panelGrid>
              <p:commandLink ajax="true" update="mainform" process="@all" value="ok" actionListener="#{Bean.listenerMethod}" oncomplete="Testing.hide()"/>
          </h:form>
        </p:dialog>
    </h:form>
    

    谢谢

    【讨论】:

      【解决方案3】:

      您需要将其声明为 EL 方法表达式,而不是纯字符串。

      actionListener="#{Bean.listenerMethod}"
      

      可以肯定的是,#{Bean} 必须是有效的托管 bean,托管 bean 名称为 "Bean",而托管 bean 又包含以下方法

      public void listenerMethod(ActionEvent event) {
          // ...
      }
      

      其中ActionEvent 来自javax.faces 包,而不是java.awt 包。

      如果这仍然不起作用,那么它是由其他原因引起的。例如。表单是嵌套的,rendered 属性评估为false 等。有关概述,请参阅this answer

      【讨论】:

      • 谢谢Mr.Scholtz > 我的大脑脱水了 :) 我正在尝试其他所有事情。
      • 我像你说的那样试过了,然后把#{Bean.listenerMethod}放了但是现在它也不会触发听众:(
      • BalusC 我可以就这个问题提出另一个更详细的问题。你能帮忙吗?
      • PrimeFaces 已经有一段时间了,他们的文档不再免费,但表单不应该进入对话框吗?还要确保您没有将表单相互嵌套。
      • 我查看了 PrimeFaces 2.1 文档及其展示。没有地方提到不要在 p:dialog 或 p:confirmDialog 中使用表单。不管怎样,谢谢你的提示:)
      猜你喜欢
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多