ONGL 表达式和Struts2标签的运用
1、 struts2的 ONGL 表达式只能使用在 struts2 的标签中
2、 Struts2的 ONGL 表达式支持 EL 表达式
3、 示例参考
3.1 <s:set>标签
01.set list
<s:set var/name="list" value="{'a','b','c','d'}" scope="request"></s:set>
list被默认存放于request域中
02. set map
<s:set name="myMap" value="#{1:'老李',2:'老张',3:'老赵',4:'老王'}"></s:set>
<s:set name="test" value=" '测试' " />
<s:iterator value="page.result" status="s" var="u">
<tr>
<td nowrap="nowrap">${requestScope.u.dwmc} </td>
<td nowrap="nowrap"><s:property value="#request.u.dwjc"/></td>
<td nowrap="nowrap"><a href="admin/Unit/Unit_update.action?dwid=<s:property value="%{page.curPage+1}" />">编辑</a></td>
<td nowrap="nowrap"> <a href="admin/Unit_delete.action?dwid=${u.dwid}">删除</a></td>
<td nowrap="nowrap"> </td>
</tr>
</s:iterator >
3.2 <s:iterator>
简述:value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
id:可选属性,指定集合里元素的id。
status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
boolean isEven(),返回当前被迭代元素的索引是否是偶数
boolean isOdd(),返回当前被迭代元素的索引是否是奇数
boolean isFirst(),返回当前被迭代元素是否是第一个元素。
boolean isLast(),返回当前被迭代元素是否是最后一个元素。
var:从集合中迭代出的元素
01、
<s:iterator value="page.result" status="s" var="u">
<tr>
<td nowrap="nowrap">${requestScope.u.dwmc} </td>
<td nowrap="nowrap"><s:property value="#request.u.dwjc"/></td>
<td nowrap="nowrap"><a href="admin/Unit/Unit_update.action?dwid=<s:property value="%{page.curPage+1}" />">编辑</a></td>
<td nowrap="nowrap"> <a href="admin/Unit_delete.action?dwid=${u.dwid}">删除</a></td>
<td nowrap="nowrap"> </td>
</tr>
</s:iterator >
在<s:iterator> 中, var 被放在了 request 域中,两种访问形势
${requestScope.u.dwmc} #request.u.dwjc
02、迭代list
<!-- 设置set集合 value-->
<!-- status 可选属性,该属性指定迭代时的IteratorStatus实例 -->
<!-- value="#attr.list" list存放到了request中 可以value="#request.list"
statu.odd返回当前被迭代元素的索引是否是奇数
-->
<s:set name="list" value="{'a','b','c','d'}"></s:set>
<s:iterator var="ent" value="#request.list" status="statu">
<s:if test="%{#statu.odd}">
<font color="red"><s:property value="#ent" />
</font>
</s:if>
<s:else>
<s:property value="#ent" />
</s:else>
</s:iterator>
<!-- map集合的特点: 语法格式:# {key:value,key1:value1,key2:value2,.....}
以上的语法中就直接生成了一个Map类型的集合,该Map对象中的每个key-value对象之间用英文的冒号隔开,
多个元素之间用逗号分隔。
-->
<s:set var="map" value="#{'1':'laowang','2':'老王','3':'猩猩'}"></s:set>
<s:iterator value="#map">
<s:property value="key" />:::<s:property value="value" />
</s:iterator>
<s:set name="age" value="21" />
<s:if test="#age==23">
23
</s:if>
<s:elseif test="#age==21">
21
</s:elseif>
<s:else>
都不等
</s:else>
<h1>form表单</h1>
<s:form action="test" namespace="/tag">
<s:textfield label="用户名" name="uname" tooltip="你的名字" javascriptTooltip="false"></s:textfield>
<s:textarea name="rmake" cols="40" rows="20" tooltipDelay="300" tooltip="hi" label="备注" javascriptTooltip="true"></s:textarea>
<s:password label="密码" name="upass"></s:password>
<s:file name="file" label="上传文件"></s:file>
<s:hidden name="id" value="1"></s:hidden>
<!--
<select name="edu">
<option value="listKey">listValue</option>
-->
<s:select list="#{'1':'博士','2':'硕士'}" name="edu" label="学历" listKey="key" listValue="value"></s:select>
<s:select list="{'java','.net'}" value="java"></s:select><!-- value是选中的 -->
<!-- 必须有name -->
<s:checkbox label="爱好 " fieldValue="true" name="checkboxFiled1"></s:checkbox>
<!-- 多个checkbox -->
<s:checkboxlist list="{'java','css','html','struts2'}" label="喜欢的编程语言" name="box" value="{'css','struts2'}"></s:checkboxlist>
<!-- map集合前要加# -->
<s:checkboxlist list="#{1:'java',2:'css',3:'html',4:'struts2',5:'spring'}" label="喜欢的编程语言" name="boxs" value="{1,2}"></s:checkboxlist>
<!-- listKey
listValue
<input type="text" name="boxs" value="listKey">显示值listValue
-->
<!-- radio -->
<%
//从服务器传过来值
pageContext.setAttribute("sex","男",PageContext.REQUEST_SCOPE);
pageContext.setAttribute("sex1","男",PageContext.REQUEST_SCOPE);
%>
<s:radio list="{'男','女'}" name="sex" value="#request.sex"></s:radio>
<s:radio list="#{1:'男',2:'女'}" name="sex1" listKey="key" listValue="value" value="#request.sex1"></s:radio>
<!-- 防止表单提交的方式 -->
<s:token></s:token>
<s:submit value="提交"></s:submit>
</s:form>
3.5 时间格式化标签<s:date name=" " format="yyyy-MM-dd" />
<!--出生年月格式化1989-07-08-->
<s:date name="user.csny" format="yyyy-MM-dd"/>
3.6在iterator中嵌套struts标签 v.bt
<s:iterator value="#request.otherlist" status="s" var="v">
<tr οnclick="" title="点击查看详细视频">
<td align="center" class="xxtd">
<s:if test="bt.length()>19">
<s:property value="bt.substring(0,19)"/>...
</s:if>
<s:else>
<s:property value="bt" />
</s:else>
</td>
</tr>
</s:iterator>
长度:<s:property value="rb.rbnr.length()" /> 截取:<s:property value="rb.rbnr.substring(0,6)" />4.5 时间处理(接收变量要为时间类型)
时间差:<s:property value="#request.time-rb.tjsj.getTime()" /> 日报时间:<s:property value="rb.tjsj.getTime()" /> 时间戳<s:property value="#request.time" /> <s:if test="rb.rblx == 0 and #request.time-rb.tjsj.getTime()"></s:if>
00、struts 三目运算符 <div name="1" class="daan1" id="${iterm.myStore.id}" style="${statu.index==0?'margin:0; border:0;':'' }">