下面将struts2的通用标签进行整理和总结:
1:property 标签
property 标签用来输出一个值栈属性的值
输出 Action 属性 customerId 的值: <s:property value=“customerId”/>
输出 session 属性 userName 的值: <s:property value=“#session.userName”/>
如果 value 属性没有给出, ValueStack 值栈栈顶对象的值被输出
在许多情况下, JSP EL 可以提供更简洁的语法
2:url 标签
url 标签用来动态地创建一个 URL
案例:
<!-- 对于value值会自动的进行OGNL解析 -->
<!-- 结果如下:/Web_Struts2_Test/testUrl?productId=1222 -->
<s:url value="/testUrl" var="url1">
<s:param name="productId" value="productId"></s:param>
</s:url>
<!-- 对于value若不希望进行OGNL解析,则使用单引号引起来 -->
<!-- 结果如下:/Web_Struts2_Test/testUrl?productId=productId -->
<br><br>
<s:url value="/testUrl" var="url2">
<s:param name="productId" value="'productId'"></s:param>
</s:url>
${url2 }
<!-- 构建一个请求action地址 -->
<!-- 结果如下:/Web_Struts2_Test/helloWorld/testAction!save.do -->
<br><br>
<s:url action="testAction" namespace="/helloWorld" method="save" var="url3"></s:url>
${url3 }
<!-- 指定如果请求过来是get,将其参数加在该url后边 ,如果是all,则都加-->
<br><br>
<s:url value="testUrl" var="url4" includeParams="get"></s:url>
${url4 }
3:param 标签
param 标签用来把一个参数传递给包含着它的那个标签
无论在给出 value 值时有没有使用 %{}, Struts 都会对它进行 ognl 求值
如果想传递一个 String 类型的字符串作为参数值, 必须把它用单引号括起来.
可以把 value 属性的值写在开始标签和结束标签之间. 利用这种方式来传递一个 EL 表达式的值
4:set 标签
set 标签用来在以下 Map 对象里创建一个键值对:
ValueStack 值栈的 ContextMap 值栈
Map 类型的 session 对象
Map 类型的 application 对象
Map 类型的 request 对象
Map 类型的 page 对象
s:set:向page,request,session,application,域加入一个属性值
<s:set name="myProduct" value="productName" scope="request"></s:set>
productName:${requestScope.myProduct }
5:push 标签
push 标签的功能和 set 标签类似.
push 标签将把一个对象压入 ValueStack 而不是压入 ContextMap.
push 标签在标签起始时把一个对象压入栈, 标签结束时将对象弹出栈.
<%Person person = new Person("CUI",10);
request.setAttribute("person",person);
%>
<!-- 该值在标签执行时,已经将该对象压入栈顶,标签结束时,将对象弹出 -->
<s:push value="#request.person">
${name }
</s:push>
6:if, else 和 elseif 标签
这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性
productPrice值栈中的值
<s:if test="productPrice>1000">
真贵
</s:if>
<s:elseif test="productPrice>900">
还好
</s:elseif>
<s:else>
一般
</s:else>
7:iterator 标签
iterator 标签用来遍历一个数组, Collection 或一个 Map, 并把这个可遍历对象里的每一个元素依次压入和弹出 ValueStack 栈
在开始执行时, iterator 标签会先把 IteratorStatus 类的一个实例压入 ContextMap, 并在每次遍历循环时更新它.
可以将一个指向 IteratorStatus 对象的变量赋给 status 属性.
<%
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("AA",1));
persons.add(new Person("BB",2));
persons.add(new Person("CC",3));
persons.add(new Person("DD",4));
persons.add(new Person("EE",5));
request.setAttribute("persons" ,persons);
%>
<!-- 会依次把要遍历的对象放在值栈的栈顶 标签结束 会弹出 -->
<s:iterator value="#request.persons" status="status">
index - ${status.index} -count:${status.count} --${name }---${age }<br>
</s:iterator>
<s:iterator value="persons">
${name }---${age }<br>
</s:iterator>
8:sort 标签
sort 标签用来对一个可遍历对象里的元素进行排序
s:sort可以对集合中的元素进行排序
<br><br>
<%PersonComparator personComparator = new PersonComparator();
request.setAttribute("comparator",personComparator);
%>
<s:sort comparator="#request.comparator" source="persons" var="persons2"></s:sort>
<s:iterator value="#attr.persons2">
${name }--${age } <br>
</s:iterator>
<br><br>
9:date 标签
date 标签用来对 Date 对象进行排版
format 属性的值必须是 java.text.SimpleDateFormat 类里定义的日期/时间格式之一.
<%
Date date = new Date();
request.setAttribute("date",date);
%>
<br>
s:date可以对Date对象进行排版
<br>
<s:date name="#request.date" format="yyyy-mm-dd hh-mm:ss" var="date2" />
date:${date2 }
10:a 标签
a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性.
<s:iterator value="persons">
<!-- 可以使用%{} 把属性包装起来,使其强制的进行OGNl解析 -->
<s:a href="getPerson.action?name=%{name}">${name }</s:a>
1:property 标签
property 标签用来输出一个值栈属性的值
输出 Action 属性 customerId 的值: <s:property value=“customerId”/>
输出 session 属性 userName 的值: <s:property value=“#session.userName”/>
如果 value 属性没有给出, ValueStack 值栈栈顶对象的值被输出
在许多情况下, JSP EL 可以提供更简洁的语法
2:url 标签
url 标签用来动态地创建一个 URL
案例:
<!-- 对于value值会自动的进行OGNL解析 -->
<!-- 结果如下:/Web_Struts2_Test/testUrl?productId=1222 -->
<s:url value="/testUrl" var="url1">
<s:param name="productId" value="productId"></s:param>
</s:url>
<!-- 对于value若不希望进行OGNL解析,则使用单引号引起来 -->
<!-- 结果如下:/Web_Struts2_Test/testUrl?productId=productId -->
<br><br>
<s:url value="/testUrl" var="url2">
<s:param name="productId" value="'productId'"></s:param>
</s:url>
${url2 }
<!-- 构建一个请求action地址 -->
<!-- 结果如下:/Web_Struts2_Test/helloWorld/testAction!save.do -->
<br><br>
<s:url action="testAction" namespace="/helloWorld" method="save" var="url3"></s:url>
${url3 }
<!-- 指定如果请求过来是get,将其参数加在该url后边 ,如果是all,则都加-->
<br><br>
<s:url value="testUrl" var="url4" includeParams="get"></s:url>
${url4 }
3:param 标签
param 标签用来把一个参数传递给包含着它的那个标签
无论在给出 value 值时有没有使用 %{}, Struts 都会对它进行 ognl 求值
如果想传递一个 String 类型的字符串作为参数值, 必须把它用单引号括起来.
可以把 value 属性的值写在开始标签和结束标签之间. 利用这种方式来传递一个 EL 表达式的值
4:set 标签
set 标签用来在以下 Map 对象里创建一个键值对:
ValueStack 值栈的 ContextMap 值栈
Map 类型的 session 对象
Map 类型的 application 对象
Map 类型的 request 对象
Map 类型的 page 对象
s:set:向page,request,session,application,域加入一个属性值
<s:set name="myProduct" value="productName" scope="request"></s:set>
productName:${requestScope.myProduct }
5:push 标签
push 标签的功能和 set 标签类似.
push 标签将把一个对象压入 ValueStack 而不是压入 ContextMap.
push 标签在标签起始时把一个对象压入栈, 标签结束时将对象弹出栈.
<%Person person = new Person("CUI",10);
request.setAttribute("person",person);
%>
<!-- 该值在标签执行时,已经将该对象压入栈顶,标签结束时,将对象弹出 -->
<s:push value="#request.person">
${name }
</s:push>
6:if, else 和 elseif 标签
这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性
productPrice值栈中的值
<s:if test="productPrice>1000">
真贵
</s:if>
<s:elseif test="productPrice>900">
还好
</s:elseif>
<s:else>
一般
</s:else>
7:iterator 标签
iterator 标签用来遍历一个数组, Collection 或一个 Map, 并把这个可遍历对象里的每一个元素依次压入和弹出 ValueStack 栈
在开始执行时, iterator 标签会先把 IteratorStatus 类的一个实例压入 ContextMap, 并在每次遍历循环时更新它.
可以将一个指向 IteratorStatus 对象的变量赋给 status 属性.
<%
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("AA",1));
persons.add(new Person("BB",2));
persons.add(new Person("CC",3));
persons.add(new Person("DD",4));
persons.add(new Person("EE",5));
request.setAttribute("persons" ,persons);
%>
<!-- 会依次把要遍历的对象放在值栈的栈顶 标签结束 会弹出 -->
<s:iterator value="#request.persons" status="status">
index - ${status.index} -count:${status.count} --${name }---${age }<br>
</s:iterator>
<s:iterator value="persons">
${name }---${age }<br>
</s:iterator>
8:sort 标签
sort 标签用来对一个可遍历对象里的元素进行排序
s:sort可以对集合中的元素进行排序
<br><br>
<%PersonComparator personComparator = new PersonComparator();
request.setAttribute("comparator",personComparator);
%>
<s:sort comparator="#request.comparator" source="persons" var="persons2"></s:sort>
<s:iterator value="#attr.persons2">
${name }--${age } <br>
</s:iterator>
<br><br>
9:date 标签
date 标签用来对 Date 对象进行排版
format 属性的值必须是 java.text.SimpleDateFormat 类里定义的日期/时间格式之一.
<%
Date date = new Date();
request.setAttribute("date",date);
%>
<br>
s:date可以对Date对象进行排版
<br>
<s:date name="#request.date" format="yyyy-mm-dd hh-mm:ss" var="date2" />
date:${date2 }
10:a 标签
a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性.
<s:iterator value="persons">
<!-- 可以使用%{} 把属性包装起来,使其强制的进行OGNl解析 -->
<s:a href="getPerson.action?name=%{name}">${name }</s:a>
</s:iterator>