本系列博客汇总在这里: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>

Struts2(16)_Struts2 的标签库_其他

三、输出标签

使用 <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();
}

Struts2(16)_Struts2 的标签库_超链接_02

四、日期输出标签

使用 <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();
}

Struts2(16)_Struts2 的标签库_其他_03

五、页面动态包含

使用 <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>

如有错误,欢迎指正!