你好,我正试图在p:datatable中实现一些primefaces命令按钮。我的需求与这篇文章几乎相同:f:setPropertyActionListener未调用
基本上,我需要在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"one_answers"dlg2")。但两者都不起作用。没有对话显示。也没有显示任何东西。而且我在浏览器的控制台窗口中没有看到任何错误信息。(我认为有一个惊叹号警告)。
我已经尝试了调试模式,并且没有调用属性"selectedFailure"的设置方法。
尝试从commandButton中删除type="button",它应该可以工作。此外,对话框不应该放在数据表中,所以"dlg2"的位置更正确。