@liayun
2016-10-04T07:48:03.000000Z
字数 6522
阅读 1665
Struts框架学习
这是Struts2框架进阶六,本文将详细讲解Struts2标签。
property标签用于输出ognl表达式的值。如:
<s:set name="name" value="'kk'" />
<s:property value="#name"/>
iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。如:
<s:set name="list" value="{'zhangming','xiaoi','liming'}" />
<s:iterator value="#list" status="st">
<font color=<s:if test="#st.odd">red</s:if> <s:else>blue</s:else>>
<s:property />
</font>
<br>
</s:iterator>
现在我们就使用该标签来迭代集合,并隔行间色显示。我们要在WebRoot根目录下新建一个用于测试的jsp页面——test.jsp。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试页面</title>
</head>
<body>
<s:set name="list" value="{'zhangming','xiaoi','liming'}" />
<s:iterator value="#list" status="st">
<font color=<s:if test="#st.odd">red</s:if> <s:else>blue</s:else>>
<s:property />
</font>
<br>
</s:iterator>
</body>
</html>
测试,结果如下:
记得插图
我们仍然举例来说明这个标签的使用。我们修改test.jsp页面的内容为:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试页面</title>
</head>
<body>
<s:set name="age" value="233" scope="request" />
<s:if test="#request.age==23"> <!-- 要明白为什么使用#?因为存放在上下文中 -->
23
</s:if>
<s:elseif test="#request.age==21">
21
</s:elseif>
<s:else>
都不等
</s:else>
</body>
</html>
测试,结果如下:
记得插图
例如,以下url标签:
<s:url action="helloworld_add" namespace="/test">
<s:param name="personid" value="23"/> <!-- value属性的值可以接收OGNL表达式 -->
</s:url>
可以生成如下路径:
/struts2_taglib/test/helloworld_add.action?personid=23
粗体部分为内容路径。
value属性的值按ognl来解析,解析不出来则原样输出。即:value中可以存放ognl表达式。请看下面一个例子:
<s:set name="myurl" value="'http://www.foshanshop.net'"/>
<s:url value="#myurl" /><br>
<s:url value="%{#myurl}" /><br>
输出结果将是:
#myurl
http://www.foshanshop.net
<s:url value="#myurl" />
将"#myurl"当成字符串处理,而不是ognl表达式,所以会原样输出。
<s:url value="%{#myurl}" />
:"%"符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。%{ }的意思是将里面的内容按照ognl表达式处理。
注意:当ognl表达式当做字符串处理时,请使用%{ }。
使用url标签的好处是:自动生成的url中,会自动添加上当前路径和后缀。在实际开发中,我们一般都会这样使用:
<a href="<s:url action="helloworld_add" namespace="/test"><s:param name="personid" value="23"/></s:url>">点击该链接</a>
页面效果为:
点击该链接
将鼠标移到该链接上会发现里面自动生成下面的url:
http://localhost:8080/struts2_taglib/test/helloworld_add.action?personid=23
粗体部分会自动加上。
如果集合为List,则以下checkboxlist复选框标签
<s:checkboxlist name="list" list="{'Java','.Net','RoR','PHP'}" value="{'Java','.Net'}"/>
会生成如下html代码:
<input type="checkbox" name="list" value="Java" checked="checked"/><label>Java</label>
<input type="checkbox" name="list" value=".Net" checked="checked"/><label>.Net</label>
<input type="checkbox" name="list" value="RoR"/><label>RoR</label>
<input type="checkbox" name="list" value="PHP"/><label>PHP</label>
注意:若是自动生成的html代码,则会在上面的代码外侧加上<tr><td>
标签,但这些是没有必要的。这时候,在struts.xml中配置常量
<constant name="struts.ui.theme" value="simple" />
就可以让其不帮我们生成乱七八糟的代码了。
如果集合为Map,则以下checkboxlist复选框标签
<s:checkboxlist name="map" list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}" listKey="key" listValue="value" value="{1,2,3}"/>
map对象放在栈顶,listKey指的是访问栈顶对象的key属性,该属性作为input属性中的value的值,listValue的值作为label的值。value指的是,如果key在这个集合中,则会勾选上。
上面的checkboxlist复选框标签会帮我们生成如下html代码:
<input type="checkbox" name="map" value="1" checked="checked"/><label>瑜珈用品</label>
<input type="checkbox" name="map" value="2" checked="checked"/><label>户外用品</label>
<input type="checkbox" name="map" value="3" checked="checked"/><label>球类</label>
<input type="checkbox" name="map" value="4"/><label>自行车</label>
如果集合里存放的是javabean,如:
<%
Person person1 = new Person(1,"第一个");
Person person2 = new Person(2,"第二个");
List<Person> list = new ArrayList<Person>();
list.add(person1);
list.add(person2);
request.setAttribute("persons",list);
%>
则以下checkboxlist复选框标签:
<s:checkboxlist name="beans" list="#request.persons" listKey="personid" listValue="name"/>
personid和name为Person的属性。
会帮我们生成如下的html代码:
<input type="checkbox" name="beans" value="1"/><label>第一个</label>
<input type="checkbox" name="beans" value="2"/><label>第二个</label>
该标签的使用和checkboxlist复选框相同。
如果集合里存放的是javabean,如:
<%
Person person1 = new Person(1,"第一个");
Person person2 = new Person(2,"第二个");
List<Person> list = new ArrayList<Person>();
list.add(person1);
list.add(person2);
request.setAttribute("persons",list);
%>
则以下radio单选框标签:
<s:radio name="beans" list="#request.persons" listKey="personid" listValue="name"/>
personid和name为Person的属性。
会帮我们生成如下的html代码:
<input type="radio" name="beans" id="beans1" value="1"/><label>第一个</label>
<input type="radio" name="beans" id="beans2" value="2"/><label>第二个</label>
如果集合为Map,则以下radio单选框标签:
<s:radio name="map" list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}" listKey="key" listValue="value" value="1"/>
会帮我们生成如下的html代码:
<input type="radio" name="map" id="map1" checked="checked" value="1"/><label for="map1">瑜珈用品</label>
<input type="radio" name="map" id="map2" value="2"/><label for="map2">户外用品</label>
<input type="radio" name="map" id="map3" value="3"/><label for="map3">球类</label>
<input type="radio" name="map" id="map4" value="4"/><label for="map4">自行车</label>
如果集合为List,则以下radio单选框标签:
<s:radio name="list" list="{'Java','.Net'}" value="'Java'"/>
会帮我们生成如下的html代码:
<input type="radio" name="list" checked="checked" value="Java"/><label>Java</label>
<input type="radio" name="list" value=".Net"/><label>.Net</label>
例1,以下select下拉选择框标签:
<s:select name="list" list="{'Java','.Net'}" value="'Java'"/>
会帮我们生成如下的html代码:
<select name="list" id="list">
<option value="Java" selected="selected">Java</option>
<option value=".Net">.Net</option>
</select>
例2,以下select下拉选择框标签:
<s:select name="beans" list="#request.persons" listKey="personid" listValue="name"/>
会帮我们生成如下的html代码:
<select name="beans" id="beans">
<option value="1">第一个</option>
<option value="2">第二个</option>
</select>
例3,以下select下拉选择框标签:
<s:select name="map" list="#{1:'瑜珈用品',2:'户外用品',3:'球类',4:'自行车'}" listKey="key" listValue="value" value="1"/>
会帮我们生成如下的html代码:
<select name="map" id="map">
<option value="1" selected="selected">瑜珈用品</option>
<option value="2">户外用品</option>
<option value="3">球类</option>
<option value="4">自行车</option>
</select>
Struts2框架里面还要其他标签,我就不一一详解了,大家只要关注以上几个重要标签即可。