2014-03-25 44 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

相關問題