当前位置:编程学习 > JSP >>

JSTL改进JSP来简化网页的实现过程(3)

流程控制
让我们转为讨论JSTL的流程控制和条件标记。如果你已经用任何一种语言使用了条件和流程控制语句,理论上这里没什么新鲜的东西。
c:if动作处理简单条件语句的测试。计算测试属性中的Boolean表达式的值,如果表达式为真的话,计算体的内容。在下面的动作中,我们也说明了备选项var属性。为了以后的使用,var属性保存测试结果在页(如果没有指定其他scope属性的话)中。
<c:if test="${status.totalVisits == 1000000}" var="visits">
You are the millionth visitor to our site! Congratulations!
</c:if>
下面我们展示了用c:choose、 c:when、 和 c:otherwise交换逻辑的JSTL的支持。一组c:when动作可能包括在一个备选的标记内,如果在c:when块中任何表达式计算值为真的话,就不用计算c:choose动作内的测试。如果c:when块中没有一个测试计算值为真的时候:如果出现c:otherwise动作内容时,则计算c:otherwise动作的内容:
<c:choose>
<c:when test="${item.type == book }">
...
</c:when>
<c:when test="${item.type == electronics }">
...
</c:when>
<c:when test="${item.type == toy }">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
c:foreach动作提供一个容易的方法来迭代一个集合的元素。如果你想只迭代集合的一部分的话,你可以分别用begin、 end、 和 step属性指定起点、终点和一个递增值。在下面的例子中,我们在变量customerNames中迭代一个集合的内容;在每个循环中,下一个元素输入到变量名内并在c:foreach动作的体内计算:
<table>
<c:forEach var="name" items="${customerNames}">
<tr><td><c:out value="${name}"/></td></tr>
</c:forEach>
</table>
记得Java的StringTokenizer类吗?有了c:forTokens动作,你可以用JSTL获得类似的功能。这个程序片断可使用在delims属性中定义的定界符通过items String属性中的条目迭代。注意,items 属性不必是一个字符直接量;它可以是任何有效的EL表达式:
<table>
<c:forTokens items="47,52,53,55,46,22,16,2" delim="," var="dailyPrice">
<tr><td><c:out value="${dailyPrice}"/></td></tr>
补充:Jsp教程,Jsp/Servlet开发工具 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,