【问题标题】:primefaces commandbutton in dialog doesn't work对话框中的primefaces命令按钮不起作用
【发布时间】:2013-04-24 07:12:10
【问题描述】:

这是我的 .xhtml:

    <h:form id="form_edit"  prependId="false">
        <p:commandButton value="#{filt.add}"
                         ajax="true" 
                         icon="ui-icon-plus"
                         update=":messages :form_edit"
                         oncomplete="confDlg.show()"
                         action="#{agentsbean.clearSelectedAgent()}"/>
    </h:form>
    <p:dialog id="dialogId" widgetVar="confDlg" showEffect="fold" hideEffect="fade" 
              appendToBody="false">
        <h:form>
            <p:inputText value="#{agentsbean.selectedAgent.name==null?'null':agentsbean.selectedAgent.name}"/>
            <p:commandButton id="agConfirmSave" value="#{filt.save}" update=":messages @form"
                             actionListener="#{agentsbean.saveAgent}" oncomplete="confDlg.hide();"/>

        </h:form>
    </p:dialog>

actionListener 保存代理:

public void saveAgent(ActionEvent actionEvent) {
    System.out.println("SaveAgent");
}

当我单击按钮 (agConfirmSave) 时 - 对话框关闭,但操作未开始!

  • primmefaces 3.5
  • Apache 7.0.35

UPD 动作工作,如果删除 p:inputText 或通过 h:outputText 更改它!!!但我需要在对话框中输入相同的文本...

【问题讨论】:

  • 不确定发生了什么,但尝试将 appendToBody 设置为 true,如下所示:appendToBody="true"
  • 你想用@form在这里做什么:update=":messages @form"?
  • 与 appendToBody="true" 相同的问题
  • 尝试删除 appendToBody 并从更新 @form 中删除。你有什么错误吗?
  • @Darka,在此代码的另一个版本中更新相同的组件。没有update=":messages @form" 操作不会开始

标签: jsf-2 primefaces


【解决方案1】:

这不是“setter”操作的有效值表达式。

<p:inputText value="#{agentsbean.selectedAgent.name==null?'null':agentsbean.selectedAgent.name}"/>

如果您作为一名真正的开发人员更加关注并喜欢服务器日志和 HTTP 流量监控器,那么您应该已经注意到 ELException/PropertyNotWritableException 基本上已经是完整的答案了.

关于如何修复它;整个表达本身实际上没有任何意义。 EL 已经是空安全的。去掉不必要的条件检查:

<p:inputText value="#{agentsbean.selectedAgent.name}"/>

【讨论】:

  • 所以你说我们不能把表达式放在 VALUE 中?
  • @Darka:我不知道你想问什么。随意自己测试/实验,这样您就可以自己看到异常。
  • 我的意思是,我们可以在 Value 属性中使用任何表达式,例如: 。我现在清楚了吗?
  • @Darka:已经回答了。这不是“setter”操作的有效值表达式。如果您仍然不明白,请尝试自己以亲眼看到它。自己的经验是最好的答案。
  • 我之前也遇到过这个问题。我自己找出来。只是有一些问题:) 你是对的,你可以通过尝试来学习(这就是我阅读 stackoverflow 的原因;))。感谢您的帮助。
猜你喜欢
  • 2013-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
相关资源
最近更新 更多