property标签:<br>
1.取值:<s:property value="username"/><br>
<!--
property的value对应了一个object,struts2会自动的转换成一个ognl表达式,然后取值.
如果需要把字符串当成值,就应该用如下形式。
-->
2.取值为字符串:<s:property value="'passwd'"/>||<s:property value="/"passwd/""/><br>
<!--
property是从值栈中取出对应属性的值,当一个给定的属性不存在值栈时,可以用default来
设置该属性的值。然而这个值不会被放到值栈中。
-->
3.设定默认值:<s:property value="admin" default="管理员"/><br>
<!--
当value的值是一个html标签时,struts2通过escape控制是将其解析成html还是字符串,
默认为true,将其转换为字符串。
-->
4.设定html:<s:property value="'<hr/>'" escape="true"/><br>
<s:property value="'<hr/>'" escape="false"/><br>
<hr>
set标签:<br>
<!--
set:通过set在不设定范围的情况下,这个属性与其对应的值会被放在request和actionContext中,
然而在debug标签下去找这个值的时候,在request里看不到相关的设置值。原因是在形成debug标签时,这个值
还没有放在request里面,但实际上这个值已经放到request里了。
-->
1.设定adminName(默认为request和actionContext):<s:set var="adminName" value="username"/>||<s:set id="1" name="adminPass" value="passwd"/><br>
2.从request里取值:<s:property value="#request.adminName"/><br>
<s:property value="#request.adminPass"/><br>
3.从actionContext取值:<s:property value="#adminName"/><br>
<s:property value="#adminPass"/><br>
<!--
scope表示设定的值放在什么范围,其取值有如下几种:application,session,session,page,action。
-->
4.设定范围:<s:set name="myPasswd" value="passwd" scope="page"></s:set><br>
5.从相应的范围取值:<%=pageContext.getAttribute("myPasswd") %><br/>
6.设定var,范围为actionContext:<s:set name="money" value="'wo hen yu men'" var="a" ></s:set><br>
7.通过变量取值:<s:property value="#a"/><br>
<hr>
<!-- bean标签如果没有用var,则只能在bean标签内部使用相关属性,出了bean标签就用不了了。
bean将会值栈中存在,而bean结束后,就移除值栈。如果用了var可以在actionContext中取得相关的值。
有一点需要说明:在bean中定义成员变量时需要前2个字母为小写,否则会出现NoSuchPropertyException.
-->
bean标签:<br>
<!-- bean标签是new一个类的对象,通过传入的参数给相关属性赋值 ,其var是将new出来的对象放入actionContext
如果没有var,new出来的对象将短暂的放在值栈中,bean标签结束时,自动从值栈中移除,因此在其他地方也访问不到
而放在actionContext中的内容在任何地方都能访问到。
-->
设置stu值:<s:bean name="com.xie.struts2.tags.modal.Student" var="stu">
<s:param name="stName">wang</s:param>
<s:property value="stName"/>
</s:bean><br>
从stu中取值:<s:property value="#stu.stName"/><br>
<hr>
include包含标签:<br>
<!-- include标签 的value值是真正的String,用%将字符串转化成ognl表达式-->
包含静态文件:<s:include value="/include1.html"></s:include><br>
包含静态文件:<s:set var="incPage" value="'/include1.html'"></s:set>
<s:include value="%{#incPage}"></s:include><br>
<!-- 通过fielderror从值栈中读出来值进行显示是一种固定格式,这个并不常用
通常我们通过ognl表达式从值栈中取值,然后进行显示。
-->
读取fielderror:<s:fielderror theme="simple"></s:fielderror><hr>
if控制标签if else if else:<br/>
取出age的值:<s:property value="#parameters.age"/><br>
<s:set var="age" value="#parameters.age[0]"></s:set>
<s:if test="#age<10">
He is too young.
</s:if>
<s:elseif test="#parameters.age[0]<20">
He is yeah!
</s:elseif>
<s:else>
Good!!!
</s:else>
<br><hr>
itertor遍历集合:<br>
<!-- iterator标签是遍历容器的,通常我们能想到的容器如:conncetion,map,enumeration等
在遍历map时,value的map前必须加上#
-->
遍历值栈的集合:<s:iterator value="sl">
<s:property value="stName"/>
</s:iterator><br>
遍历指定集合:<s:iterator value="{1,2,3}">
值:<s:property/><br/>
</s:iterator><br>
自定义变量:<s:iterator value="{'my name is xie','I want to go home','Java Is good'}" var="x">
<s:property value="#x.toUpperCase()"/>
</s:iterator><br>
使用status:<br> <s:iterator value="{'aaa','bbb','ccc','ddd','eee','fff'}" 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><br>
访问map:<br>
<s:iterator value="#{1:'aa',2:'bb',3:'cc',4:'dd',5:'ee'}">
<s:property value="key"/>|||||||<s:property value="value"/><br/>
</s:iterator><br>
<s:iterator value="#{1:'aa',2:'bb',3:'cc',4:'dd',5:'ee'}" var="map">
<s:property value="#map.key"/>|||||||<s:property value="#map.value"/><br/>
</s:iterator><br> <hr>
subset标签:<br/>
1. 基础访问:<s:subset source="sl">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
<!-- 从低一个元素开始,访问count个元素 -->
2.用count:<s:subset source="sl" count="2">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
3.用start:<s:subset source="sl" count="2" start="1">
<s:iterator>
<s:property value="stName"/>
</s:iterator>
</s:subset><br>
4.使用var:<s:subset var="mysl" source="sl" >
<%
Iterator<Student> i = (Iterator<Student>) pageContext.getAttribute("mysl");
while(i.hasNext()) {
%>
<%=i.next().getStName() %>
<% } %>
</s:subset><br>
<!-- decider决定哪些元素将能被用于显示, -->
5. 使用decider: <s:subset source="myList">
<s:iterator>
<s:property />
</s:iterator>
</s:subset>