Struts2标签根据用途不同可以分为5类:
数据标签:用于输出值栈中的值,或者将变量、对象存入值栈
控制标签:主要用于控制页面执行流程
表单标签:主要用于生成HTML页面的表单元素
非标单标签:主要用于生成页面上的树、Tab页等标签
Ajax标签:主要用于支持Ajax效果
数据标签:
action:用于在JSP页面直接调用一个action
property:用于输出某个值
param:用于设置参数,通常用于bean标签和action标签的子标签
<s:param name="author">zaq</s:param> //指定一个名为“author”的参数,该参数值为“zaq”
<s:param name="author" value="zaq"/> //制定一个名为"author"的参数,该参数值为“zaq”对象的值
<s:param name="author" value="'zaq'"></s:param>//指定“author”参数的值为“zaq”字符串
bean:创建一个JavaBean实例
<s:bean name="org.model.User" id="user">
在bean标签内部可以直接输出:<br>
<s:param name="username">李芳芳</s:param>
(1)第一种赋值方式:
<s:property value="username"/><br>
(2)第二种赋值方式:
<s:param name="username" value="'李芳芳'"></s:param>
<s:property value="username"/>
</s:bean>
<br>
在bean标签外部利用id取值
<s:property value="#user.username"/>
date:用于格式化输出一个日期
<%
//定义一个时间为2016年3月5日21点25分
Date bir=new Date(109,3,6,15,00);
request.setAttribute("bir", bir);
%>
指定format格式为yyyy-MM-dd,且nice=false结果:
<s:date name="#request.bir" format="yyyy--MM-dd" nice="false"/><br>
指定format格式为yyyy-MM-dd,且nice=false结果:
<s:date name="#request.bir" format="yyyy--MM-dd" nice="true"/><br>
未指定format,且nice=false结果:
<s:date name="#request.bir" nice="false"/><br>
未指定format,且nice=true结果:
<s:date name="#request.bir" nice="true"/><br>
debug:用于在页面上生成一个调用调试链接。当点击该链接时,可以看到当前值栈和StackContext中的内容
include:在jsp页面中包含其他的jsp或者Severlet资源
include.jsp:
该页面将被导入,携带的参数值为:
${param.java}
不带参数的导入:<br>
<s:include value="include.jsp"/>
<br>
带参数的导入:<br>
<s:include value="include.jsp">
<s:param name="java" value="'Java EE实用教程'"></s:param>
</s:include>
il8n:用于指定国际化资源文件的baseName
push:将某个值放入值栈的栈顶
<s:push value="'Java EE实用教程'">
<s:property/>
</s:push>//默认输出值栈栈顶的值
set:设置一个新变量
<s:set name="java" value="'Java EE实用教程'"/>
<s:property value="java"/>
text:用于输出国际化资源
url:生成一个url地址
控制标签:
if:用于控制选择输出的标签
elseif:控制选择输出的标签,必须和if标签结合使用
else:控制选择输出的标签,必须和if标签结合使用
<s:if test="false">
Java EE基础实用教程
</s:if>
<s:elseif test="false">
Eclipse应用实践教程
</s:elseif>
<s:else>
Java EE实用教程
</s:else>
iterator:用于将集合迭代输出
<table border="1">
<s:iterator
value="{'Java EE基础实用教程','Eclipse应用实践教程','Java EE应用教程','C++实用教程'}"
id="book" status="st">
<!-- 如果当前地带为偶数行背景为#CCCCFF -->
<!-- 其中#st.even为用OGNL取值,下同 -->
<tr <s:if test="#st.even">bgcolor="#CCCCFF"</s:if>>
<td><s:property value="book"/></td>
<td>当前迭代索引为:<s:property value="#st.getIndex()"/></td>
<td>当前迭代了元素个数为:<s:property value="#st.getCount()"/></td>
</tr>
</s:iterator>
</table>
append:将多个集合拼接成一个新的集合
<s:append id="books">
<s:param value="{'Java EE基础实用教程','Eclipse应用实践教程'}"></s:param>
<s:param value="{'Java EE应用教程','C++实用教程'}"></s:param>
</s:append>
<table border="1" bgcolor="#CCCCFF">
<caption>编程系列丛书</caption>
<s:iterator value="#books" status="s">
<tr>
<td width="30"><s:property value="#s:count"/></td>
<td><s:property /></td>
</tr>
</s:iterator>
</table>
merge:将多个集合拼接成一个新的集合,但是append拼接的方式不同
<s:merge id="books">
<s:param value="{'Java EE基础实用教程','Eclipse应用实践教程'}"></s:param>
<s:param value="{'Java EE应用教程','C++实用教程'}"></s:param>
</s:merge>
<table border="1" bgcolor="#CCCCFF">
<caption>编程系列丛书</caption>
<s:iterator value="#books" status="s">
<tr>
<td width="30"><s:property value="#s:count"/></td>
<td><s:property /></td>
</tr>
</s:iterator>
</table>
generator:将一个字符串按照指定的分隔符分隔成多个字符串,临时生辰过的多个字符串可以用iterator标签迭代输出
未指定id,集合将直接放入值栈:<br>
<s:generator separator="," val="'C++实用教程,SQL Server实用教程,VC++实用教程'">
<s:iterator>
<s:property/><br>
</s:iterator>
</s:generator>
指定id,集合将放入到页面的上下文中,并制定了生成字符串的个数<br>
<s:generator separator="," val="'C++实用教程,SQL Server实用教程,VC++实用教程'" id="books" count="2"/>
<s:iterator value="#attr.books">
<s:property/><br>
</s:iterator>
sort:用于对集合进行排序
subset:截取集合的部分元素,形成新的集合
表单标签:
(1)与HTML标签作用相同的标签
不介绍
(2)特有的一些标签
s:checkboxlist:用来生成多个复选框
<s:checkboxlist list="{'Struts2','Hibernate','Spring'}" label="用list集合生成复选框" name="java" labelposition="top"/>
<s:set name="list" value="{'Struts2','Hibernate','Spring'}"></s:set>
<s:checkboxlist list="#list" name="check" label="从别处取值生成复选框" labelposition="top"></s:checkboxlist>
s:combobox:生成下拉菜单及文本框的组合
<s:combobox list="{'Struts2','Hibernate','Spring','Ajax'}"name="combobox" label="请选择" />
s:doubleselect:生成两个互相关联的下拉列表
<s:form action="select">
<s:set name="ds"
value="#{'江苏':{'南京','无锡','苏州'},'安徽':{'合肥','六安','芜湖'},'河南':{'郑州','信阳','南阳'}}">
</s:set>
<s:doubleselect list="#ds.keySet()" doubleName="dn"
doubleList="#ds[top]" name="n" label="请选择地方" labelposition="top"></s:doubleselect>
</s:form>
s:updownselect:用来生成一个列表框,列表框中选项可以手动进行排序
s:optiontransfereselect:用于生成两个列表选择框,并且生成一系列的按钮用于控制各选项在两个下拉列表框之间的移动、升降等。
s:optgroup:用于生成一个下拉列表框的选项组,通常和select标签组合使用,在一个select标签中可以包含多个opgroup生成的选项组
s:token:用来解决表单多次提交的问题
非标单标签:
s:actionerror:用来输出存储在ActionError中的值
s:actionmessage:用来输出存储在ActionMessage中的值
s:fielderror:用来输出存储在FieldError中的值
addActionError("actionError中保存的错误信息");
addActionMessage("actionMessage中保存的错误信息");
addFieldError("username", "fieldError中保存的username错误信息");
addFieldError("password", "fieldError中保存的password错误信息");
显示actionerror中保存的错误信息:
<s:actionerror/>
显示actionmessage中保存的错误信息:
<s:actionmessage/>
显示fielderror中保存的错误信息:
<s:fielderror></s:fielderror>
只显示fielderror中保存的username错误信息:
<s:fielderror>
<s:param>username</s:param>
</s:fielderror>
只显示fielderror中保存的password错误信息:
<s:fielderror>
<s:param>username</s:param>
</s:fielderror>
s:component:用来创建自定义视图组件