html循环c for,jsp – 计算c:forEach循环中所有数字的总和

注意:我尝试组合答案做一个全面的列表.我在适当的时候提到名称,以便在到期时给予信用.

有很多方法来解决这个问题,与每个相关的利弊:

纯JSP解决方案

正如上面提到的ScArcher2一样,一个非常容易和简单的解决方案就是直接在JSP中实现:

${person.name}${person.age}

${ageTotal}

这个解决方案的问题是,JSP会让您感到困惑,因为您可能会引入scriplet.如果您期待每个人看页面都能够遵循基本的逻辑,这是一个很好的选择.

纯EL溶液

如果您已经在EL 3.0(Java EE 7 / Servlet 3.1)上使用新的支持streams and lambdas:

${person.name}${person.age}

${personList.stream().map(person -> person.age).sum()}

JSP EL功能

输出总数的另一种方式是在JSP中不引入scriplet代码是使用EL函数. EL函数允许您在公共类中调用public static方法.例如,如果您想迭代您的集合并对值进行求和,您可以在公共类中定义一个名为sum(List people)的公共静态方法,也许称为PersonUtils.在您的tld文件中,您将放置以下声明:

sum

com.example.PersonUtils

int sum(java.util.List people)

在你的JSP中你会写:

...

JSP EL功能有一些好处.它们允许您使用现有的Java方法,而不需要编码到特定的UI(自定义标签库).他们也是紧凑的,不会混淆一个非编程导向的人.

自定义标签

另一个选择是滚动您自己的自定义标签.这个选项将涉及最多的设置,但会给你我认为你是寻找的,绝对没有脚本.在http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPTags5.html#74701可以找到一个使用简单自定义标签的好教程

所涉及的步骤包括对TagSupport进行子类化:

public PersonSumTag extends TagSupport {

private List personList;

public List getPersonList(){

return personList;

}

public void setPersonList(List personList){

this.personList = personList;

}

public int doStartTag() throws JspException {

try {

int sum = 0;

for(Iterator it = personList.iterator(); it.hasNext()){

Person p = (Person)it.next();

sum+=p.getAge();

}

pageContext.getOut().print(""+sum);

} catch (Exception ex) {

throw new JspTagException("SimpleTag: " +

ex.getMessage());

}

return SKIP_BODY;

}

public int doEndTag() {

return EVAL_PAGE;

}

}

在tld文件中定义标签:

personSum

example.PersonSumTag

empty

...

personList

true

true

java.util.List

...

在您的JSP顶部声明taglib:

并使用标签:

${person.name}${person.age}

显示标签

正如之前提到的zmf,您也可以使用显示标签,尽管您需要包含相应的库:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值