Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF&x27;总计';数据表的变量_Java_Jsf_Jstl - Fatal编程技术网

Java JSF&x27;总计';数据表的变量

Java JSF&x27;总计';数据表的变量,java,jsf,jstl,Java,Jsf,Jstl,我已经阅读了上一篇文章:。虽然答案表明总数应该来自支持bean,但我确实需要在facelet中这样做。在我的例子中,我想显示一个银行账簿类型的数据表,每一行包括一个日期、一个描述、一个金额和一个运行总数。数据来自JPA get类型列表。如果我在支持bean中进行了总计,那么我需要迭代列表,创建一个仅用于运行总计属性的数据模型。这的确是低效的 我试过: <c:set var="sum" value="0.0" scope="view" /> <table> <

我已经阅读了上一篇文章:。虽然答案表明总数应该来自支持bean,但我确实需要在facelet中这样做。在我的例子中,我想显示一个银行账簿类型的数据表,每一行包括一个日期、一个描述、一个金额和一个运行总数。数据来自JPA get类型列表。如果我在支持bean中进行了总计,那么我需要迭代列表,创建一个仅用于运行总计属性的数据模型。这的确是低效的

我试过:

<c:set var="sum" value="0.0" scope="view" />
    <table>
<ui:repeat value="#{xxxBean.items}" var="item">
    <tr>
        <td><h:outputText value="#{item.date1}" /></td>
        <td><h:outputText value="#{item.desc}" /></td>
        <td><h:outputText value="#{item.amount}" /></td>
    <c:set var="sum" value="${sum+item.amount}"/>
        <td><h:outputText value="${sum}" /></td>
    </tr>
</ui:repeat>
    </table>


但它不起作用,${sum}将每行重置为零。除了制作自定义组件之外,还有其他方法吗?

这仍然可以使用支持bean中的方法解决:

public class MyBackingBean {

 private Double runningTotal = 0.0;

 public Double getRunningTotal(Item item) {
   Double result = runningTotal;
   runningTotal += item.getAmount();
   return result;
 }

}
然后在您的视图中,使用此选项显示运行总数:

<td><h:outputText value="#{xxxBean.getRunningTotal(item)}" /></td>


不优雅,但它可以工作。

您不能以这种方式将JSTL与JSF混合使用。不,它不起作用#{xxxBean.getRunningTotal(item)}是不可接受的,只有#{xxxBean.runningTotal}-没有参数getRunningTotal(),您使用的是什么版本的JSF?在JSF2中,您可以将参数传递给方法表达式。我在tomcat 6.0上使用Mojarra 2.0.2。EL2.2中添加了参数支持,因此您需要启用tomcat 7和Servlet 3.0支持。(这通常是EL-影响JSTL和JSF)