如何根据dataTable中的选定复选框通过ajax更新outputText值

时间:2015-09-29 15:45:00

标签: ajax jsf jsf-2 primefaces

我需要您的帮助,使用dataTable中所选复选框的总金额字段更新outputText。 jsf具有以下代码:

    <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调用方法的相应方法,以更新选择了Total Requests Amounts的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 个答案:

答案 0 :(得分:0)

只需在表格中添加两个Ajax标记:

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

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

注意:对于方法名称,参数,属性和ID使用小写。

注意:我将方法命名为“updateTotal”,而不是“ShowTotal”。