1.通用标签
>property
>set
>bean
>include
>param
>debug
<h1>property标签</h1>
property-name:<s:property value="user.name"/><br />
property-String:<s:property value="'name'"/><br />
property-age:<s:property value="user.age"/><br />
property-default:<s:property value="admin" default="lisi"/><br /><!-- 如果值栈中不存在该变量,那么该变量的默认值为“lisi” -->
property-escape:<s:property value="'<hr/>'" escape="false"/><br /><!-- 不转义,由浏览器正常解析,显示出一条横线。。 -->
<h1>set标签</h1>
设置adminName的值<s:set var="adminName" value="user.name" /><br /><!-- value的值是OGNL对象,不是字符串!!set标签将设置的变量既放到了request域中,又放到了ActionContext中,这是默认的scope. -->
获取request中adminName的值:<s:property value="#request.adminName"/><br /><!-- 注意一点是debug下并没有看到request中有adminName的值,这是因为在还没有来得及将adminName的值放进request中时,debug标签的内容已经形成了。-->
获取ActionContext中adminName的值:<s:property value="#adminName"/><br />
<!-- set标签中还有一个scope属性, 如果设置了scope,则往scope指定的作用域中 ,而不会放在ActionContext中。ActionContext感觉跟request作用域差不多。。-->
<h1>bean标签</h1>
<!-- 定义bean并使用param来设定新的属性值 -->
<s:bean name="com.struts2.Domain.User" var="user1">
<s:param name="name" value="'wangwu'"></s:param><!-- value中的值为OGNL对象,如果想赋值为字符串需要使用''来把值括起来。 -->
<s:param name="age" value="'34'"></s:param>
<s:debug></s:debug>
</s:bean>
<h1>include标签</h1><!--简单,但不推荐使用-->
<s:set var="incPage" value="'/hello.html'"></s:set>
<s:include value="%{#incPage}"></s:include><!-- %{}是将大括号里面的内容强制转换为OGNL对象,而不是字符串 -->
<s:debug></s:debug>
2.控制标签
>if elseif else
>iterator
<>collections map enumeration iterator array
>subset:参考帮助文档
<h1>if elseif else</h1>
<s:set var="age" value="user.age"></s:set>
<s:property value="#age"/><br />
<s:if test="#age<0">wrong age</s:if>
<s:elseif test="#age<20">too young</s:elseif>
<s:else>Mr.right</s:else>
<hr />
<h1>iterator标签</h1>
<h2>遍历集合</h2>
<s:iterator value="{1,2,3}">
<s:property/> |<!-- 不用写value属性。 -->
</s:iterator>
<h2>自定义变量</h2>
<s:iterator value="{'aaa','bbb','ccc'}" var="x">
<s:property value="#x.toUpperCase()"/> |
</s:iterator>
<h2>使用status</h2>
<s:iterator value="{'aaa','bbb','ccc'}" status="status">
<s:property/> |
遍历过的元素总数:<s:property value="#status.count"/> |
遍历过的元素索引:<s:property value="#status.index"/>
当前是偶数?:<s:property value="#status.even"/>
当前是奇数?:<s:property value="#status.odd"/>
是第一个元素吗?:<s:property value="#status.first"/>
是最后一个元素吗?:<s:property value="#status.last"/>
<br />
</s:iterator>
<hr />
<h1>遍历map</h1>
<s:iterator value="#{1:'a',2:'b',3:'c'}">
<s:property value="key"/> | <s:property value="value"/> <br />
</s:iterator>
<br />
<s:iterator value="#{1:'a',2:'b',3:'c'}" var="x">
<s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
</s:iterator>
<s:debug></s:debug>
3.UI标签:真正开发中用的不太多。
>theme
<>simple xhtml(默认) css_shtml ajax
4.ajax标签
这里不再叙述,一般用ajax原始API,没有必要使用包装后的ajax。
5.$#%的区别
>$用于i18n(国际化)和struts配置文件,也是可以在jsp页面中获取值栈中的值。
>#用来取得ActionContext中的值。
>%将原来的文本属性解析为ognl,对于本来就是ognl的属性不起作用。