<li>property:<s:property value="username"/></li>
<li>property取值为字符串:<s:property value="'username'"/></li>
<li>property设定默认值:<s:property value="admin" default="管理员"/></li>
若值栈中无admin则用"管理员"为默认值
<li>property 设置html:<s:property value="'<hr/>'" escape="false"/></li>
set标签,默认scope为action即request和actioncontext,如没有其他scope,则到相应scope中去取值
即可,且name和id都已deprecated,使用var value 和 scope即可。
<li> set 设定adminname值(默认为request和actioncontext):
<s:set var="adminName" value="username"/></li>
<li>set 从request取值:<s:property value="#request.adminName"/></li>
<li>set 从actioncontext取值:<s:property value="#adminName"/></li>
s debug内容中无值原因是debug内容还没有将request中值包含进去就显示出来了。
<li>set 设定范围:<s:set name="adminPassword" value="password" scope="page"/></li>
<li>set 从相应范围取值:<%=pageContext.getAttribute("adminPassword")%></li>此为jsp取值方式
<li>set 设定scope:<s:set var="adminPassword" value="password" scope="session"/></li>
<li>set 从相应范围取值:<s:property value="#session.adminPassword"/></li>
<li>bean 查看debug情况:
<s:bean name="com.xlt.struts2.tags.Dog" var="myDog">
<s:param name="name" value="'oudy'"></s:param>若为value="oudy"表示为ognl表达式则
oudy为对象
</s:bean></li>
<s:bean name="com.xlt.struts2.tags.Dog">
<s:param name="name" value="'pp'"></s:param>
<s:property value="name"/></s:bean>
没有使用var则在<s:bean/>范围外就没有该对象了所以访问不到,若使用了var 会将其放入
actioncontext中即使脱离<s:bean/>范围<s:property value="#myDog.name"/>同样可以访问到。
window-preference-file association *.html可以修改默认打开html的工具。
<li>include _include1.html 包含静态英文文件,说明%用法
<s:set var="includePage" value="'/_include1.html'"/>
<s:include value="%{#includePage}"></s:include></li>
%{}表示将{}中表达式视为ognl表达式。include不常用。
$用于i18n和struts配置文件
#取得actioncontext中的值
%将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用
<s:property value 为ognl <s:include value里不强转为普通字符串
window-preferences-content assist 里auto activation delay可以设置提示时间
<li>if elseif else:
『』 age=<s:property value="#parameters.age[0]"/><br/>
<s:if test="#parameters.age[0]<0">wrong age!</s:if>
<s:elseif test="#parameters.age[0]<20">too young</s:elseif>
<s:else>yeah!</s:else><br/>
上段中『』后可以用set标签:
<s:set var="age" value="#parameters.age[0]"/>后面代码中test="#age"替换即可。
<li>遍历集合{1,2,3}:<br/>
<s:iterator value="{1,2,3}">
<s:property/></s:iterator></li>
<li>自定义变量<br/>
<s:iterator value="{'aaa','bbb','ccc'}" var="x">
<s:property value="#x.toUpperCase()">
</s:iterator></li>
<li>使用status:<br/>
<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>
<li>定义map:<br/>
<s:iterator value="#{1:'a',2:'b',3:'c'}">
<s:property value="key"/>|<s:property value="value"/><br/>
</s:iterator></li>
iterator 可以遍历collections(list,set ,stack,queue),map,enumeration,iterator,array
UI标签 theme主题:simple,xhtml(默认的主题),css_xhtml,ajax
可以通过在struts.xml中添加自定义的主题:
<constant name="struts.ui.theme" value="mytheme"/>来配置ui主题,mytheme为src包下
template.mytheme
建议的方式:把所有主题定义为simple,fielderror特殊处理,自己控制其他标签的展现。