这一篇中所用到的例子,似乎是李刚书上的,我没有看,是从老师的电脑上拷过来的;十分能说明问题;
具体的标签使用起来不是很难,忘记可以参考例子,去struts2文档查看更好,文档写的比较清楚;
话不多说,上代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'tags.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<ol>
<li>action:
<s:action var="t" name="tags01" executeResult="false" ignoreContextParams="false">
<s:param name="username" value="'javaxzbxzb'"></s:param>
</s:action>
<s:property value="#t.username"/>
</li><hr/>
<li>property:<s:property value="#t.username"/></li>
<li>property取值为字符串:<s:property value="'xzb'"/></li>
<li>property设定默认值:<s:property value="username" default="xzb"/></li>
<li>property设定html:<s:property value="'<hr/>'" escape="true"/></li>
<li>bean:定义bean,并使用param来设定新的属性值
<s:bean var="mycat" name="struts2.tags.Cat">
<s:param name="name" value="'blackCat'"/>
<!--<s:property value="name"/>-->
</s:bean>
<s:property value="#mycat.name"/>
</li><hr/>
<li>set:设定值(默认是action):<s:set var="admin" value="#t.username"></s:set>
<s:property value="admin"/>
</li>
<li>set从request中取值:<s:property value="#request.admin"/></li>
<li>set从Stack Context中取值:<s:property value="#admin"/></li>
<li>set的var属性;scope设为page<s:set var="test" value="'var test'" scope="page"></s:set>
</li>
<li>set:从page中取var属性值:<s:property value="#attr.test"/></li>
<hr/>
<li>push:<s:push value="#mycat"><s:property value="name"/></s:push></li>
<li>include<br>
include-JSP:<s:include value="included.jsp">
<s:param name="author" value="'薛增博'"></s:param>
</s:include>
include-HTML:<s:set var="in" value="'included.html'"></s:set>
<s:include value="%{in}"></s:include>
</li>
<hr/>
<li>if elseif else:
<s:set var="XZB" value="'23'"></s:set>
<s:property value="XZB" /> <br />
<s:if test="XZB<0">wrong</s:if>
<s:elseif test="XZB<30">young man</s:elseif>
<s:else>old man</s:else>
<hr/>
<li>iterator---list:
<s:iterator value="{1,2,3,4,5,6,7,8,9}" begin="1" end="8" step="2">
<s:property/>
</s:iterator><br/>
iterator---map:<br/>
<s:iterator value="#{1:'java1',2:'java2',3:'java3'}" status="s">
<s:property/>
<s:property value="key"/><s:property value="value"/>
<s:property value="#s.count"/>
<s:property value="#s.index"/>
<s:property value="#s.first"/>
<s:property value="#s.last"/>
<s:property value="#s.odd"/>
<s:property value="#s.even"/><br/>
</s:iterator>
</li><hr/>
<form action="tags02" method="post">
年龄1:<input type="checkbox" value="12" name="myList1" />
年龄2:<input type="checkbox" value="82" name="myList1" />
<input type="submit" value="submit" />
</form>
</li><hr/>
集合标签:<br/>
<li>append---jsp:<br/>
<s:append var="appendList">
<s:param value="{'banana', 'apple', 'orange', 'cherry'}" />
<s:param value="{'香蕉', '苹果', '桔子', '樱桃'}" />
</s:append>
<s:iterator value="#appendList">
<s:property/>
</s:iterator><br/>
append---action:<br/>
<s:append var="myAppendIterator">
<s:param value="%{myList1}" />
<s:param value="%{myList2}" />
<s:param value="%{myList3}" />
</s:append>
<s:iterator value="#myAppendIterator">
<s:property/>
</s:iterator>
</li><hr/>
<li>merge---jsp:<br/>
<s:merge var="mergeList">
<s:param value="{'banana', 'apple', 'orange', 'cherry'}" />
<s:param value="{'香蕉', '苹果', '桔子', '樱桃'}" />
</s:merge>
<s:iterator value="#mergeList">
<s:property/>
</s:iterator></li><br/>
merge---action:
<s:merge var="myMergeIterator">
<s:param value="%{myList1}" />
<s:param value="%{myList2}" />
<s:param value="%{myList3}" />
</s:merge>
<s:iterator value="#myMergeIterator">
<s:property />
</s:iterator><hr/>
<li>generator:<br/>
<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" separator="," count="3" >
<s:iterator>
<s:property />
</s:iterator>
</s:generator>
</li>
<li>sort:
<s:bean var="myComparator" name="struts2.tags.MyComparator"/>
<s:sort source="{'轻量级Java EE企业应用实战','疯狂Ajax讲义','Struts 2权威指南','疯狂XML讲义'}" comparator="#myComparator" var="sortedList"/>
<s:iterator status="st" value="#attr.sortedList">
<s:property/>
</s:iterator>
</li>
<li>subset:
<s:bean var="myDecider" name="struts2.tags.MyDecider"></s:bean>
<s:subset source="{'疯狂Java讲义','Struts 2权威指南','轻量级Java EE企业应用实战','疯狂Ajax讲义','疯狂XML讲义'}" decider="#myDecider">
<s:iterator>
<s:property />
</s:iterator>
</s:subset>
</li>
</ol>
<s:debug></s:debug>
</body>
</html>
结合,strust2的文档和实例就可以明白何时用那个标签了,常用的便是这几个标签。
上面还有几个Action的代码一同贴出来:
package struts2.tags; import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.ActionSupport; public class TagsAction extends ActionSupport { private String username; private List<String> myList1; private List<String> myList2; private List<String> myList3; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public List<String> getMyList1() { return myList1; } public List<String> getMyList2() { return myList2; } public List<String> getMyList3() { return myList3; } public String execute() { myList1 = new ArrayList<String>(); myList1.add("1"); myList1.add("2"); myList1.add("3"); myList2 = new ArrayList<String>(); myList2.add("a"); myList2.add("b"); myList2.add("c"); myList3 = new ArrayList<String>(); myList3.add("A"); myList3.add("B"); myList3.add("C"); return "success"; } }
实体类:
package struts2.tags; public class Cat { private String name; public Cat(){ } public Cat(String name){ this.name=name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString(){ return "name:"+name; } }
两个工具类:
package struts2.tags; import org.apache.struts2.util.SubsetIteratorFilter; public class MyDecider implements SubsetIteratorFilter.Decider { public boolean decide(Object element) throws Exception { String str = (String)element; return str.indexOf("Java") > 0; } }
package struts2.tags; import java.util.Comparator; public class MyComparator implements Comparator { public int compare(Object element1, Object element2) { return element1.toString().length() - element2.toString().length(); } }
好了,作为参考,结束了。
转载于:https://blog.51cto.com/seasky09/1227102