一ognl
<!--
s:set 定义一个变量,使用ognl表达式赋值,并放在某个作用域中
@var 变量名
@value 变量值,使用ognl表达式,字符串常量用‘’括起来,默认值value stack 栈顶的值
@scope 变量所放作用域 requset,session,application, page,action,默认值request、action
-->
<!-- 定义数字 -->
<s:set var="number" value="18" scope="request"></s:set>
<!-- 定义字符串常量 -->
<s:set var="str" value="'str'" scope="session"></s:set>
<!-- 定义对象 scope默认在action域-->
<s:set var="user" value="new com.pk.vo.User" scope="application"></s:set>
<s:set var="now" value="new java.util.Date()" scope="action"/>
<!-- 定义list -->
<s:set var="numbers" value="{11,22,322,421}"/>
<!-- 定义map -->
<s:set var="map" value="#{'abc':'apple','b':'banana'}"/>
<!-- 定义对象list数组-->
<s:set var="users" value="{
new com.pk.vo.User('aa','11'),
new com.pk.vo.User('bb','22'),
new com.pk.vo.User('cc','33'),
new com.pk.vo.User('dd','44'),
new com.pk.vo.User('ee','55'),
new com.pk.vo.User('ff','66'),
new com.pk.vo.User('gg','77'),
new com.pk.vo.User('hh','88'),
new com.pk.vo.User('ii','99'),
new com.pk.vo.User('jj','00')
}"/>
ognl 访问静态变量: 访问静态方法struts.ognl.allowStaticMethodAccess=true
<s:property value="@java.lang.Math@PI"/><br />
ognl 访问静态方法:
<s:property value="@java.lang.String@valueOf(18)"/><br />
ognl 访问Math类:
<s:property value="@@PI"/><br />
ognl 访问方法:显示今天周几
<s:property value="@java.util.Calendar@getInstance().get(@java.util.Calendar@DAY_OF_WEEK)"/><br />
ognl 访问page,request,session,application域中变量:
<s:property value="#request.number"/>
<s:property value="#session.str"/>
<s:property value="#application.user"/><br />
ognl 访问栈上下文中变量:
<s:property value="#user"/><br />
ognl 调用变量的普通属性:
<s:property value="#user.username"/>或
<s:property value="#user['username']"/><br />
ognl 访问list:
<s:property value="#numbers"/><br />
ognl 访问list中第2个元素:
<s:property value="#numbers[1]"/><br />
ognl 访问list的大小:
<s:property value="#numbers.size()"/>或
<s:property value="#numbers.size"/><br />
ognl 访问list中元素某个属性的集合:
<s:property value="#users.{username}"/><br />
投影 筛选出元素>50:
<s:property value="#numbers.{?#this>50}"/><br />
筛选出第一个元素>50:
<s:property value="#numbers.{^#this>50}"/><br />
筛选出最后一个元素>50:
<s:property value="#numbers.{$#this>50}"/><br />
ognl 访问map:
<s:property value="#map"/><br />
map中的key集合:
<s:property value="#map.keys"/><br />
map中的value集合:
<s:property value="#map.values"/><br />
map中key=banana对应的value值:
<s:property value="#map['b']"/>或若是多字符
<s:property value="#map.abc"/><br />
map的大小:
<s:property value="#map.size()"/><br />
ognl 访问地址栏参数:
<s:property value="#parameters.id[0]"/><br />
<!--
s:property 输出变量的值
@value ognl表达式
@default 默认值
@escape 转义
-->
<s:property value="#xyz" default="hello"/>
<s:property value="'<b>hello<b>'" escape="false"/><br>
<s:debug></s:debug>
二 struts标签
if
<s:if test="#parameters.age[0]<18&&#parameters.age[0]>0">
young
</s:if>
<s:elseif test="#parameters.age[0]<60">
adult
</s:elseif>
<s:elseif test="#parameters.age[0]<100">
old
</s:elseif>
iterator和url
<s:set var="numbers" value="{11,22,322,421}"/>
<s:set var="map" value="#{'abc':'apple','b':'banana'}"/>
<s:set var="users" value="{
new com.pk.vo.User('aa','11'),
new com.pk.vo.User('bb','22'),
new com.pk.vo.User('cc','33'),
new com.pk.vo.User('dd','44'),
new com.pk.vo.User('ee','55'),
new com.pk.vo.User('ff','66'),
new com.pk.vo.User('gg','77'),
new com.pk.vo.User('hh','88'),
new com.pk.vo.User('ii','99'),
new com.pk.vo.User('jj','00')
}"/>
<s:if test="#numbers!=null||#numbers.size>0">
<ul>
<s:iterator var="number" value="#numbers">
<li><s:property value="#number"/> ${number }</li>
</s:iterator>
</ul>
</s:if>
<s:if test="#map !=null||#map.size>0">
<ul>
<s:iterator var="number" value="#map">
<li><s:property value="#number.key"/> --<s:property value="#number.value"/> ${number.key }--${number.value}</li>
</s:iterator>
</ul>
</s:if>
<s:if test="#users!=null&&!#users.empty">
<table border="1">
<s:iterator value="#users" var="user" status="i">
<s:if test="#i.first">
<s:set var="color" value="'orange'"></s:set>
</s:if>
<s:elseif test="#i.last">
<s:set var="color" value="'gray'"></s:set>
</s:elseif>
<s:elseif test="#i.odd">
<s:set var="color" value="'red'"></s:set>
</s:elseif>
<s:elseif test="#i.even">
<s:set var="color" value="'green'"/>
</s:elseif>
<th>index</th><th>username</th><th>password</th>
<tr style="background-color: ${color}"><td>${i.count }</td><td>${user.username}</td><td>${user.pwd }</td></tr>
</s:iterator>
</table>
</s:if>
<s:url namespace="/user" action="delete" var="delUserPath">
<s:param name="id" value="99"></s:param>
</s:url>
<a href="${delUserPath }">删除用户</a>
<s:iterator begin="1" end="10" var="i">
<s:if test="#parameters.pn[0]==i">
[${i }]
</s:if>
<s:else>
<s:url var="path" includeParams="all">
<s:param name="pn" value="i"/>
</s:url>
<a href="${path }">${i }</a>
</s:else>
</s:iterator>
<s:debug></s:debug>
date注意提前导入dojo插件
并
<%@ taglib prefix="se" uri="/struts-dojo-tags" %>
<s:set var="now" value="new java.util.Date()"></s:set>
<s:date name="#now" format="yyyy年MM月dd日"/>
<se:datetimepicker></se:datetimepicker>
form 提前在struts中配置常量设置风格
<constant name="struts.ui.theme" value="simple"></constant>
这样你的s标签就保持了以前你的习惯
否则你必须在标签中加label
<s:form action="" namespace="" enctype="multipart/form-data">
用户名:<s:textfield name="uname"></s:textfield><br>
密码:<s:password name="pwd"></s:password><br>
性别:<s:radio list="#{'M': '男','F':'女'}" listKey="key" listValue="value" value="'F'"></s:radio><br>
地址:<s:select list="#{1:'peking',2:'zhengzhou',3:'tianjing' }" listKey="key" listValue="value" value="2" name="loc"></s:select><br>
爱好:<s:checkboxlist list="#{'code':'编代码','book':'看书','game':'游戏' }" listKey="key" listValue="value" value="{'game','code'}" name="favs"></s:checkboxlist><br>
自我介绍:<s:textarea name="introduce" cols="20" rows="10"></s:textarea><br>
个人形象:<s:file name="photo"></s:file><br>
<s:hidden name="id" value="1"/>
<s:submit value="提交"></s:submit>
</s:form>