标签目录
1、通用标签
a)Property
b)Set
i.默认为action scope,会将值放入request和ActionContext中
ii.page/request/session/application
c)bean
d)include对中文文件支持的问题,不建议使用,如需要包含,改用jsp包含
e)param
f)debug
2、控制标签
a)If elseif else
b)Iterator
i.collections map enumerateon iterator array
c)subset
3、UI标签
a)Theme
i.Simple xhtml(默认) css_xhtml ajax
4、AJAX标签
a)补充
5、$ # % 的区别
a)$用于i18n和Struts配置文件
b)#取得ActionContext的值
c)%将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用
i.参考<s:property>和<s:include>
格式:<s:property value=””default=”” escape=”true|false”/>
如果value中的内容为object,则Struts2都会把它解析成ognl表达式
如果里面需要表示为字符串,则需要将内容用单引号括起来
1、利用ognl表达式取值(例如:取值堆栈中的username值)
<s:propertyvalue="username"/>
2、取值为字符串
需要将内容用单引号括起来
<s:propertyvalue="’username’"/>
3、设置默认值-default
如果一个对象值取不到,则可以使用default设置一个默认值。
<s:propertyvalue="admin" default=”管理员”/>
4、设定HTML-escape
是否设置返回值为HTML原代码样式
true:解析返回值的html代码 false:原封不动返回值
<s:propertyvalue="'<hr/>'"escape="false"/>
二、set标签
注:var 用于设定变量名
value变量值(可以是ognl表达式),也可以是字符串
scope就是的作用范围request session page application action(默认)
<li>set设定adminName值(默认为request和ActionContext):<s:setvar="adminName"value="username"/></li>
<li>set从request取值:<s:propertyvalue="#request.adminName"/></li>
<li>set从ActionContext取值:<s:propertyvalue="#adminName"/></li>
<%--<li>set设定范围: <s:set name="adminPassword" value="password" scope="page"/></li>
<li>set从相应范围取值: <%=pageContext.getAttribute("adminPassword") %></li>
--%>
<li>set设定var,范围为ActionContext:<s:setvar="adminPassword"value="password"scope="session"/></li>
<li>set使用#取值:<s:propertyvalue="#adminPassword"/></li>
<li>set从相应范围取值:<s:propertyvalue="#session.adminPassword"/></li>
三、bean标签
定义bean,并使用param来设定新的属性值
<s:beanname="com.bjsxt.struts2.tags.Dog">
<s:paramname="name"value="'pp'"></s:param>
</s:bean>
定义bean,并使用一个变量(var)来接受创建的这个bean,取出值来
<s:beanname="com.bjsxt.struts2.tags.Dog"var="myDog">
<s:paramname="name"value="'oudy'"></s:param>
</s:bean>
拿出值:因为在actionContext中,所以使用#
<s:propertyvalue="#myDog.name"/>
当<s:bean>不指定var时,则对象相关属性会在值栈中。如果需要访问,则只能在<s:bean>标签内访问。
当<s:bean>标签结束后,则值栈就不存在这个对象了。
<s:beanname="com.bjsxt.struts2.tags.Dog">
<s:paramname="name"value="'pp'"></s:param>
<s:propertyvalue="name"/>
</s:bean>
四、<include>标签-少使用
包含文件
<li>include _include1.html包含静态英文文件
<s:includevalue="/_include1.html"></s:include>
</li>
<li>include _include2.html包含静态中文文件
<s:includevalue="/_include2.html"></s:include>
</li>
<li>include _include1.html包含静态英文文件,说明%用法
<s:setvar="incPage"value="%{'/_include1.html'}"/>
<s:includevalue="%{#incPage}"></s:include>
</li>
%{xxx}强制将xxx内容转换成OGNL表达式
<-- One: -->
<s:include value="myJsp.jsp" />
<-- Two: -->
<s:include value="myJsp.jsp">
<s:param name="param1" value="value2" />
<s:param name="param2" value="value2" />
</s:include>
<-- Three: -->
<s:include value="myJsp.jsp">
<s:param name="param1">value1</s:param>
<s:param name="param2">value2</s:param>
</s:include>
<li>if elseif else:
age =<s:propertyvalue="#parameters.age[0]"/><br/>
<s:setvar="age"value="#parameters.age[0]"/>
<s:iftest="#age<0">wrong age!</s:if>
<s:elseiftest="#parameters.age[0]<20">too young!</s:elseif>
<s:else>yeah!</s:else><br/>
<s:iftest="#parameters.aaa == null">null</s:if>
</li>
<s:if test="%{false}">
<div>Will Not Be Executed</div>
</s:if>
<s:elseif test="%{true}">
<div>Will Be Executed</div>
</s:elseif>
<s:else>
<div>Will Not Be Executed</div>
</s:else>
<li>遍历集合:<br/>
<s:iteratorvalue="{1, 2, 3}">
<s:property/>|<!—不需要写其它的,就可以输出数组内的值-->
</s:iterator>
</li>
<li>自定义变量:<br/>
<s:iteratorvalue="{'aaa', 'bbb', 'ccc'}"var="x">
<s:propertyvalue="#x.toUpperCase()"/>|
</s:iterator>
</li>
<li>使用status:<br/>
<s:iteratorvalue="{'aaa', 'bbb', 'ccc'}"status="status">
<s:property/>|
遍历过的元素总数:<s:propertyvalue="#status.count"/>|
遍历过的元素索引:<s:propertyvalue="#status.index"/>|
当前是偶数?:<s:propertyvalue="#status.even"/>|
当前是奇数?:<s:propertyvalue="#status.odd"/>|
是第一个元素吗?:<s:propertyvalue="#status.first"/>|
是最后一个元素吗?:<s:propertyvalue="#status.last"/>
<br/>
</s:iterator>
</li>
<li>
<s:iteratorvalue="#{1:'a', 2:'b', 3:'c'}">
<s:propertyvalue="key"/>|<s:propertyvalue="value"/><br/>
</s:iterator>
</li>
<li>
<s:iteratorvalue="#{1:'a', 2:'b', 3:'c'}"var="x">
<s:propertyvalue="#x.key"/>|<s:propertyvalue="#x.value"/><br/>
</s:iterator>
</li>
1、css(覆盖Struts2原来的css)
2、覆盖单个文件
3、定义自己的theme
4、实战
a)把所有主题定义为simple
b)Fielderror特殊处理
c)自己控制其他标签的展现
参考链接:
http://blog.csdn.net/liushuai_ly/article/details/7935291#t9
http://blog.csdn.net/zxl315/article/details/2886456
官方网站:http://struts.apache.org/development/2.x/docs/guides.html
struts实战