在<p:datatable>中使用<p:commandbutton>来显示<p:dialog> </p:dialog> </p:datatable> </p:commandbutton>

时间:2014-03-25 00:06:40

标签: jsf primefaces datatable javabeans

您好我正在尝试在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>

我尝试将对话框放在不同的位置(请参阅我的&#34; dlg1&#34;和&#34; dlg2&#34;)。但都不起作用。没有对话框显示。也没有显示任何东西。我在浏览器的控制台窗口中看不到任何错误消息。 (我认为有惊叹号警告)。

我尝试过调试模式,并为属性设置方法&#34; selectedFailure&#34;不被称为。

1 个答案:

答案 0 :(得分:0)

尝试删除type =&#34;按钮&#34;从你的commandButton,它应该工作。另外,对话框不应该放在dataTables中,所以&#34; dlg2&#34;的位置。更正确。