2015-09-29 72 views
0

更新的outputText基於DataTable中選擇複選框值我需要你在與一個DataTable中選擇複選框總量現場更新的outputText幫助。 JSF的有下面的代碼:如何通過Ajax

<p:dataTable id="PendingRequests" var="hr" selection="#{hrdirector.selectedRequests}" 
      value="#{hrdirector.listPendingRequests}" rowKey="#{hr.requestNo}" 
      filteredValue="#{hrdirector.filteredRequests}" widgetVar="dataTableWidgetVar"> 
     <p:column selectionMode="multiple" style="width:16px;text-align:center"></p:column> 
     <p:column headerText="Request No."> 
      <h:outputText value="#{hr.requestNo}"/> 
     </p:column> 
     <p:column headerText="Request Amount"> 
      <h:outputText value="#{hr.requestAmount}"/> 
     </p:column> 
    </p:dataTable> 

    <h:outputText id="Sum" value="#{hr.Sum}"/> 

的用戶將選擇一些複選框,我需要知道適當的方式,通過AJAX調用一個方法來更新與選擇的請求總數量的outputText。

的方法被稱爲是:

public void ShowTotal() { 


     try { 

     String [] tranAmountArr = new String[selectedRequests.size()]; 

     for (int i = 0; i < selectedRequests.size(); i++) { 

      tranAmountArr[i] = selectedRequests.get(i).getEncashmentAmount(); 

      Sum = Sum + Double.parseDouble(tranAmountArr[i]); 

     } 

     System.out.println(Sum); 


    } catch (Exception e) { 

     System.err.print(e); 

     e.printStackTrace(); 

     log.error("Error in ShowTotal()"); 

    } 


} 
+1

http://stackoverflow.com/q/20456143/1391249 – Tiny

+0

@BalusC是一個非常優雅的解決方案,如果你只需要輸出的總和。如果以後想要做的任何驗證或額外的操作,則必須增加服務器端的聽衆。 – lametaweb

回答

0

只需添加兩個阿賈克斯標籤的表格內:

<p:ajax event="rowSelect" listener="#{hrdirector.showTotal}" 
process="@this" update="sum" /> 

和:

<p:ajax event="rowUnselect" listener="#{hrdirector.showTotal}" 
process="@this" update="sum" /> 

注:方法名,paremeters ,分支和ID使用小寫。

注:我會命名方法 「updateTotal」,而不是 「ShowTotal」。

+0

感謝它的工作。而是rowSelect/rowUnselect的,我應該用rowSelectCheckbox和rowUnselectCheckbox – 99maas