Struts2-tags

通用标签:

property

默认的value 的类型为object,只要是object  类型都会被解析成ognl表达式,但是如果只想传递一个普通的字符串需要加'' ;example

<s:property value="username" />会被解析成ognl表达式

<s:proerty value="'username'" />此时的username就是一个普通的字符串

设定默认值:

<s:property value="admin" default="管理员" />当值栈中没有 admin 属性时,取不到值,就采用默认值,如果值栈中有 admin对应的值,则采用取到的值

设定html :

<s:property value="'</hr>'" escape="false" />默认的escape的值为 true,为 true 时struts2会把字符串解析成普通的字符串,为假时Struts2 会把它解析成html标签


set

value的类型为object

name和id均以废弃统一使用var代替

var定义一个变量,scope指定变量的范围(可取:page,session,application,request,action)

value指定变量的值, 在没有指定scope的情况下:默认的范围为request和ActionContext

<s:set var="name" value="username" />存储在request和ActionContext中,name  的值就是 username 中保存的值

从request 中取出:<s:property value="#request.name" />

从 ActionContext中取值 :<s:property var="#name" />

设定范围:<s:set var="pass" value="password" scope="page" />

从相应范围取值:<%=pageContext.getAttribute("pass")%>


bean

生成一个对象:

<s:bean name="类路径" var="对象名">

<s:param name="属性名" value="值" ></s:param>

</s:bean>

当未给对象起名时: 生成的对象会放在值栈区,访问对象的属性可以用访问值栈的方式访问:<s:property value="属性名" />

但是不可以在bean标签外访问该对象,当bean标签结束后,对象就被移除了值栈区


为对象起名后,对象就会放在stackContext中,可以在标签外访问该对象<s:property value="#对象.属性" />

include

value的标签为String 类型

include将一个 html页面包含到当前页面

<s:include value="html的url" />

当value 的值存的是string类型的, ${}可以将其强制转换成ognl表达式

不推荐用,中文经常出现乱码

param

debug

控制标签

if elseif else

ifelse控制标签使用test获取参数的值,取法和property标签相同

<s:if test="#name==null">请填写姓名</s:if>

<s:set var="len" value="name.length()" />

<s:if test="#len<0">wrong</s:if>

<s:elseif test="#len>10">to long</s:elseif>

<s:else >OK</s:else>

iterator

遍历集合:

<s:iterator value="{1,2,3,4}">  定义一个集合

<s:property />   通过property遍历集合

</s:iterator>


自定义变量遍历集合

<s:iterator value="{'aaa','bbb','ccc'}" var="x">   定义的变量x相当于for each中的循环变量,就是集合中元素

<s:property value="#x.toUpperCase()" />  获取集合中的元素

</s:iterator>


使用status: status记录着集合遍历过程的状态

<s:iterator value="{'aaa','bbb,'ccc'}" status="status">

<s:property />

<s:property value="#status.count" />

<s:property value="#status.index" />

<s:property value="#status.odd" />判断是否是奇数

<s:property value="#status.even" />判断是否是偶数

<s:property value="#status.first" />判断是否是第一元素

<s:property value="#status.last" />

</s:iterator>


遍历map集合

<s:iterator value="#{1:'a',2:'b',3:'c'}">定义map 集合必须加 #

<s:property value="key" /> 获取map集合的key

<s:property value="value" />获取map集合的value

</s:iterator>


自定以变量遍历map 集合

<s:iterator value="#{1:'a',2:'b',3:'c'}" var="x">

<s:property value="#x.key" />

<s:property value="#x.value" />

</s:iterator>

subset

ui

声明式异常处理:

如果希望struts处理异常,在后台的代码中,需将异常显示的抛出,

在对应的struts.xml 配置异常的捕捉:

第一种方式在每个action中配置自己的异常处理:

<exception-mapping result="result名" exception="Java异常包" />

<result name="">/xx.jsp</result>

第二种统一配置处理:

将异常处理放在一个包中, 其它包只要继承该包即可使用

example:

<package name="xxxx" extends="struts-default">

<global-results>

<result name="xxx">/xx.jsp</result>

</global-results>

<global-exception-mappings>

<exception-mapping result="result名" exception="Java异常包" />

</global-exception-mappings>

</package>


I18n国际标准:(很少用,用到时查文档)

拦截器: