本系列博客汇总在这里:Struts2 汇总
一、分支判断源码工程文件为:struts2_18
首先要引入 struts2 的标签库。
<%@ taglib uri="/struts-tags" prefix="s"%>
If elseif else 的使用,test 内部是 ognl 表达式取值。
<s:if test="#age < 16">
<s:property value="'小孩'"/>
</s:if>
<s:elseif test="#age >= 16 && #age < 18">
<s:property value="'未成年'"/>
</s:elseif>
<s:else>
<s:property value="'成年人'"/>
</s:else>
二、循环
使用 <s:iterator>
标签。
属性:
- Value: 是从 ActionContext 中获取的集合 key,不需要 #。
- Var:是每次从集合中取值赋值的变量。
- 使用的时候需要加 #,例:#str。
<h3>循环数组</h3>
<s:iterator value="arrStr" var="str">
<s:property value="#str"/>
</s:iterator>
<hr>
<h3>循环list</h3>
<s:iterator value="list" var="str">
<s:property value="#str"/>
</s:iterator>
<hr>
<h3>循环map</h3>
<s:iterator value="map" var="mapObj">
<s:property value="#mapObj.key"/>------><s:property value="#mapObj.value"/><br>
</s:iterator>
对于对象集合循环,Status 属性可以给循环设置参数。
变量:
- Index:当前循环的索引号,从 0 开始。
- Count:当前循环的顺序号,从 1 开始。
- First:是否是第一行。
- List:是否是最后一行。
- odd:是否是奇数。
- even:是否是偶数。
- begin:从数字几开始。
- end:到数字几结束。
- step:步长。
<h3>循环对象集合</h3>
<table border="1">
<tr>
<th>id</th>
<th>姓名</th>
<th>性别</th>
<th>索引</th>
<th>序号</th>
<th>是否首行</th>
<th>是否尾行</th>
<th>奇数</th>
<th>偶数</th>
</tr>
<s:iterator value="personList" var="person" status="status">
<tr bgcolor='<s:property value="#status.odd?'#c3f3c3':'#f3c3f3'"/>'>
<td><s:property value="#person.personId"/></td>
<td><s:property value="#person.personName"/></td>
<td><s:property value="#person.gender == 1?'男':'女'"/></td>
<td><s:property value="#status.index"/></td>
<td><s:property value="#status.count"/></td>
<td><s:property value="#status.first"/></td>
<td><s:property value="#status.last"/></td>
<td><s:property value="#status.odd"/></td>
<td><s:property value="#status.even"/></td>
</tr>
</s:iterator>
</table>
三、输出标签
使用 <s:property>
标签。
属性:
- Value:用于通过 ognl 表达式来取值。
- Default:如果 value 值是空就给一个默认值。
- EscapeHtml:是否被浏览器解析,默认是 true 不解析,false 是解析。
<h3>输出标签</h3>
<s:property value="#name"/>
<s:property value="#name1" default="空值"/>
<s:property value="'<a href>魏宇轩</a>'" escapeHtml="false"/>
public String execute() throws Exception
{
// 获得动作类的上下文ActionContext包含了contextmap和valuestack
ActionContext ac = ServletActionContext.getContext();
ac.put("name", "魏宇轩");
return super.execute();
}
四、日期输出标签
使用 <s:date>
标签。
属性:
- Name:取日期的 ognl 表达式的值。
- Format:要展示的日期的格式。
<h3>日期输出标签</h3>
<s:date name="#ctime" format="yyyy-MM-dd HH:mm:ss"/>
public String execute() throws Exception
{
// 获得动作类的上下文ActionContext包含了contextmap和valuestack
ActionContext ac = ServletActionContext.getContext();
ac.put("ctime", new Date());
return super.execute();
}
五、页面动态包含
使用 <s:action>
标签。
属性:
- Name:要请求的 Action。
- ExecuteResult:是否展示 Action 的执行结果,true 是展示,false 不展示。
<h3>页面包含</h3>
<s:action name="hello1" executeResult="true"></s:action>
六、超链接标签
使用 <s:a>
标签。
属性:
- Action:要链接的动作类的名称,标签会在 Action 的值后面自动的加上后缀
-
<s:param>
是<s:a>
内部的元素,param 主要是给 a 链接赋予参数的,可以自动的对中文编码,例:http://localhost:8080/struts2_18/hello.action?username=%E4%BB%BB%E4%BA%
(注意:与使用的浏览器有关)。
<h3>超链接</h3>
<s:a action="hello">我是a链接
<s:param name="username" value="'魏宇轩'"></s:param>
<s:param name="job" value="'teacher'"></s:param>
</s:a>
如有错误,欢迎指正!