如何通过 ajax 根据 dataTable 中选中的复选框更新 outputText 值
How to update outputText value based on selected checkboxes in dataTable through ajax
我需要你的帮助来更新 outputText
数据表中 selected 复选框的总金额字段。 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}"/>
用户将要 select 多个复选框,我需要知道通过 ajax 调用方法的适当方式,以使用总请求量更新 outputText selected.
要调用的方法是:
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()");
}
}
只需在 table 中添加两个 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"。
我需要你的帮助来更新 outputText
数据表中 selected 复选框的总金额字段。 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}"/>
用户将要 select 多个复选框,我需要知道通过 ajax 调用方法的适当方式,以使用总请求量更新 outputText selected.
要调用的方法是:
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()");
}
}
只需在 table 中添加两个 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"。