2014-03-25 42 views
0

您好,我正在尝试在p:datatable中实现一些primefaces命令按钮。我的需求几乎与本文相同: f:setPropertyActionListener not invoked使用<p:datatable>中的<p:commandbutton>显示<p:dialog>

基本上我需要在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”的设置方法。

回答

0

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

+0

谢谢!一旦我回到我的工作站,我会明天尝试,如果它能正常工作,我会接受这个答案。 – bookmonkie

+0

删除type =“button”后,我收到此消息。从“theForm:testFailures:0:j_id2139004342_7f7e9ef6”引用的表达式“responseDialog”找不到组件。 – bookmonkie

+0

我也注意到p:对话框没有添加到呈现的html页面。 – bookmonkie

相关问题