`
qilixiang012
  • 浏览: 200753 次
文章分类
社区版块
存档分类
最新评论

struts2 标签

阅读更多

标签目录

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>

一、property标签

格式:<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值(默认为requestActionContext:<s:setvar="adminName"value="username"/></li>

<li>setrequest取值:<s:propertyvalue="#request.adminName"/></li>

<li>setActionContext取值:<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>

五、If elseif else

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

六、Iterator标签

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

七、Theme

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实战

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics