我有一个有8列的JSF数据表。最后4列是数值列。让我们说我的数据表带来20行结果。我想添加最后一行,它只包含最后4列的字段,并包含20行相应值的总和。我想用Facelets代码添加最后一行。我怎么能这样做?
答案 0 :(得分:1)
如果你有一个表,你可以添加这个页脚 facet:
<h:dataTable id="table1" value="#{shoppingCartBean.items}" var="item"
border="1">
<f:facet name="header">
<h:outputText value="Your Shopping Cart" />
</f:facet>
<h:column>
<f:facet name="header">
<h:outputText value="Item Description" />
</f:facet>
<h:outputText value="#{item.description}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Price" />
</f:facet>
<h:outputText value="#{item.price}" />
</h:column>
<f:facet name="footer">
<h:panelGroup style="display:block; text-align:right">
<h:outputText value="Total 1: #{shoppingCartBean.total1}" />
<h:outputText value="Total 2: #{shoppingCartBean.total2}" />
<h:outputText value="Total 3: #{shoppingCartBean.total3}" />
<h:outputText value="Total 4: #{shoppingCartBean.total4}" />
</h:panelGroup>
</f:facet>
</h:dataTable>
然后你应该编写你的支持bean中的总函数:
@ManagedBean
public class ShoppingCartBean {
...
public int total1() {
// Do the sum of all elements from first column of table as you wish....
return result;
}
public int total2() {
// Do the sum of all elements from second column of table as you wish....
return result;
}
}
如果您更喜欢更精细和可重复使用的解决方案,您可以创建自己的EL功能:
<f:facet name="footer">
<h:panelGroup style="display:block; text-align:right">
<h:outputText value="Total 1: #{func:calculateTotal(shoppingCartBean.items, 4}" />
<h:outputText value="Total 2: #{func:calculateTotal(shoppingCartBean.items, 5}" />
<h:outputText value="Total 3: #{func:calculateTotal(shoppingCartBean.items, 6}" />
<h:outputText value="Total 4: #{func:calculateTotal(shoppingCartBean.items, 7}" />
</h:panelGroup>
</f:facet>
对于此解决方案,您可以查看BalusC description on how to create a custom el function
此致