【问题标题】:use <p:commandbutton> in <p:datatable> to show a <p:dialog>在 <p:datatable> 中使用 <p:commandbutton> 来显示 <p:dialog>
【发布时间】:2014-03-25 00:06:40
【问题描述】:

您好,我正在尝试在 p:datatable 中实现一些 primefaces 命令按钮。我的需求几乎与这篇文章相同: f:setPropertyActionListener not invoked

基本上我需要在a中有一列按钮,点击一个按钮会将当前行的对象传递给bean,然后会弹出一个对话框,显示所选对象的一些信息。

以下是相关代码:

<f:view>
    <body>
        <h:form id="theForm">

            <p:dataTable id="testFailures" value="#{testDetails.report.failures}" var="failure"
                styleClass="baseTable">
                <p:column id="requestColumn">
                    <f:facet name="header">
                        <h:outputText value="Request" id="requestHeaderText" />
                    </f:facet>
                    <p:commandButton value="Detail" update="requestDialog"
                        oncomplete="PF('dlg1').show();" type="button">
                        <f:setPropertyActionListener
                            target="#{testDetails.selectedFailure}" value="#{failure}" />
                    </p:commandButton>
                    <h:message for="requestDialog" />
                    <p:dialog id="requestDialog" header="Request Dialog"
                        widgetVar="dlg1" dynamic="true">
                        <h:outputText value="#{selectedFailure.request}" />
                    </p:dialog>

                </p:column>
            </p:dataTable>
        </h:form>
        <h:message for="theForm" />

        <h:message for="responseDialog" />
        <p:dialog id="responseDialog" header="Request Dialog"
            widgetVar="dlg2" dynamic="true">
            <h:form>
                <h:outputText value="#{selectedFailure.request}" />
            </h:form>
        </p:dialog>
    </body>
</f:view>

我试图将对话框放在不同的位置(参见我的“dlg1”和“dlg2”)。但两者都不起作用。没有显示对话框。也不显示任何东西。而且我在浏览器的控制台窗口中看不到任何错误消息。 (我认为有一个感叹号警告)。

我尝试过调试模式,没有调用属性“selectedFailure”的设置方法。

【问题讨论】:

    标签: jsf primefaces datatable javabeans


    【解决方案1】:

    尝试从您的 commandButton 中删除 type="button" ,它应该可以工作。此外,对话框不应放在 dataTables 中,因此“dlg2”的位置更正确。

    【讨论】:

    • 谢谢!我明天回到我的工作站后会尝试,如果它有效,我会接受这个答案。
    • 删除 type="button" 后,我收到此消息。找不到从“theForm:testFailures:0:j_id2139004342_7f7e9ef6”引用的表达式“responseDialog”的组件。
    • 我还注意到 p:dialog 没有添加到呈现的 html 页面中。
    • 我也把我的更新改成了这样:update=":theID" 我也做了我的 bean @ViewScoped
    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 2013-06-28
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多