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国际标准:(很少用,用到时查文档)
拦截器: