struts学习4

一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>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值