首先访问index.jsp:
struts2.xml:
TagsAction:
tags.jsp:
在浏览器中的显示结果为:
1、s:property中value的属性是object类型(凡是object类型的),都会把里面的字符串解析为ognl表达式,所以就会从value stack中取value对应的值了
如果不想把value的值解析为ognl表达式,只想字符串表示一个普通的字符串,则再加个' '
2、s:property中当value值通过ognl解析后在value stack中取不到,但也想让它显示东西时,设一个默认值,default="**",取不到用默认值,取得到就用取到的值
3、s:property中escape默认为true,即譬如value=" '<hr/>' "时,显示<hr/>,如果设置escape="false",即不让struts将html标签转换为普通字符串,仍然将<hr/>理解为html标签,即显示一条线
s:property中value为value stack中的Property Name,在页面显示的为根据Property Name从value stack中取出的Property Value
1、set标签中的var为stack context中的key,value(object类型,自动解析为ognl表达式)为stack context中的value。 (var--value)
2、当struts2.1中不设定scope时,Set设定的var-value默认在stack context和stack context.request(此时request为stack context的key,var-value为stack context的value)中各放入一个。(scope有5个范围:application、session、request、page、action(即stack context+request))
3、当struts2.1中设定了scope时,那么设定的var-value只存放在指定的scope对应的value中。
4、<s:bean>是new一个对象,设定var才能在stack context中找到,里面的<s:param>标签表示new对象时,传给构造方法的实参(注意)<s:param>里面的value是ognl表达式,要想让它表示普通字符串,则再加个' '。
5、<s:bean>如果不设定var,那么必须在<s:bean></s:bean>里面才能访问的到,因为<s:bean></s:bean>一旦执行结束就从value stack中删掉。如果想在<s:bean></s:bean>执行完后还能访问的到,那么需要指定var,这样就将bean放到stack context中。
6、struts2.1 <s:include>在处理中文上有bug,建议不要用
7、<s:include value="">这里value是String类型,不是object(不会自动解析为ognl表达式),而value="%{}"表示强制将这个String当做ognl表达式处理(在所有情况下都加%{}表示如果原来里面的内容就是ognl的话,将%{}忽略,如果不是,则强制解析为ognl)。
8、<s:if>、<s:elseif>、<s:else>:
9、 <s:iterator> :ognl表达式{}代表一个集合,<s:property/>会自动取出集合内容。
var指在循环时取出当前值,把该值放入var中,var是放在stack context中的,访问时<s:property value="#x.toUpperCase()"/>
Status:一看例子就懂了
10、iterator中定义Map时,必须前面加#,iterator可以遍历:collection、map、enumeration、array、以及实现了iterator的任何接口。
11、subset:
从一个集合的第三个元素开始,截取13个元素作为一个子Set集合
12、struts2的UI标签用的不多