控制标签——if else if
其实这个if else的标签,就是控制某些语句输出,某些语句不输出,在jsp中也有相应的标签。
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<struts>
<constant name="struts.devMode" value="true" />
<package name="tags" extends="struts-default">
<action name="tags">
<result>/tags.jsp</result>
</action>
</package>
</struts>
tags.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>Struts Tag学习</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<ol>
<li>
<s:set var="age" value="#parameters.age"></s:set>
Url地址新输入一个age参数:
<s:if test="#age==null">null</s:if>
<s:elseif test="#age[0]<2">too young</s:elseif>
<s:elseif test="#age[0]>10">too old</s:elseif>
<s:else>good!</s:else>
<s:debug></s:debug>
</li>
</ol>
</body>
</html>
标签很好读懂,首先是将参数age重新设定成age变量,存入ActionContext,方便后面的书写。
如果从ActionContext拿出来的age是null,则在页面输出”null”
如果不是,因为age是一个集合,虽然我们不知道我们只输入了一个age进去,但是还是要拿第0个位置的那个age。
判断,如果
age<2
,那么就输出"too young"
,如果age>10
,那么输出"too old"
,只有age>=2&age<=10
,输出"good!"
。
输入: http://localhost:8080/Struts2_Self_Tags/tags
输入:http://localhost:8080/Struts2_Self_Tags/tags?age=1
输入:http://localhost:8080/Struts2_Self_Tags/tags?age=2
输入:http://localhost:8080/Struts2_Self_Tags/tags?age=8
输入:http://localhost:8080/Struts2_Self_Tags/tags?age=12
从以上的例子和代码,应该可以体会到<s:if>
这几个标签的用法。
控制标签——Iterator
Iterator取一个数组中的值
<li>
Iterator取出数组里面的值:
<s:iterator value="{'a','b','c'}">
<s:property/> |
</s:iterator>
</li>
Iterator取出数组中的字符串转换为大写输出
<li>
Iterator取出数组里面的值转换为大写:
<s:iterator value="{'aa','bb','cc'}" var="x">
<s:property value="#x.toUpperCase()"/>|
</s:iterator>
</li>
使用status得到遍历的状态
<li>使用status:<br />
<s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
<s:property/> |
遍历过的元素总数:<s:property value="#status.count"/> |
遍历过的元素索引:<s:property value="#status.index"/> |
当前是偶数?:<s:property value="#status.even"/> |
当前是奇数?:<s:property value="#status.odd"/> |
是第一个元素吗?:<s:property value="#status.first"/> |
是最后一个元素吗?:<s:property value="#status.last"/>
<br />
</s:iterator>
</li>
迭代取出map中每个key与每个value的两种做法
<li>取map的key和value法一 <br>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" >
<s:property value="key"/> | <s:property value="value"/> <br />
</s:iterator>
</li>
<li>取map的key和value法二 <br>
<s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
</s:iterator>
</li>
得到的页面结果如下图所示:
这就是本小节的全部内容
若有不足之处,请不吝赐教