OGNL表达式详解
OGNL表达式标签中的值有三种:
1.直接是OGNL表达式。
2.字符串需转义自OGNL表达式。
1)OGNL表达式转换为字符串显示,需要用''(单引号)引起来。
2)转为OGNL表达式的字符串,需要加%{字符串}来转换
3.只能是字符串。
标签:
一、数据标签
1.property -- 显示数据
value -- 要显示的内容,放OGNL表达式 如果要显示字符串,需要用''引起来。
escape -- true/false 默认是true, 改为false显示html效果标签
default 默认值,放字符串,不是放OGNL
<s:property value="'<h1>HAHA<h1>'" escape="false" default="[这是默认值]"/>
2.set -- 设置一个新变量,赋值
var -- 新变量名
scope --范围 page/request/session/application
value --变量值,OGNL表达式,字符串要加单引号
<s:set var="ah" value="newsList" scope="request"></s:set> <s:property value="#request.ah"/>
3.url -- 生成网址
var -- 变量名
value--要生成的URL地址,字符串可转义自OGNL,要手动写出完整的地址。
action -- 要生成的URL地址,字符串可转义自OGNL,生成出绝对路径。一般用这个
<s:url var="uu" action="News_getAll"></s:url> <s:property value="#uu"/>
4.bean -- JavaBean的实现类
name -- 要实例化的Java类
var -- 变量名
5.param -- 生成参数
name -- 标签名
value -- OGNL表达式,加单引号
<s:bean name="com.itnba.maya.domel.News" var="bbb"> <s:param name="biaoti" value="'这是自定义的标题'"></s:param> </s:bean> <s:property value="#bbb.biaoti"/>
<s:url var="uu" action="News_getAll"> <s:param name="ids" value="'k001'"></s:param> </s:url> <s:property value="#uu"/>
6.date -- 格式化输出日期
name -- 要格式化的日期值 --- OGNL表达式
format --- 格式化显示的格式。
<s:date name="date" format="yyyy年MM月dd日" var="mydate"/> <s:property value="mydate"/>
二、控制标签
1.if...else if ...else
test -- 表格式 OGNL
2.iterator
var
value --OGNL
status :even,odd,first,last,index,count
begin
end
step
<s:iterator var="aa" value="newsList" status="st"> <s:if test="#st.even"> <div style=""> </s:if> <s:else> <div> </s:else> <s:property value="#st.index+1"/>. <s:property value="#aa.biaoti"/> </div> </s:iterator>
3.append/merge/subset
var--新的对象名
<param> 子元素
<s:set value="{'aa','bb','cc'}" var="aa"></s:set> <s:set value="{'11','22','33'}" var="bb"></s:set> <s:append var="all"> <s:param name="one" value="#aa"></s:param> <s:param name="two" value="#bb"></s:param> </s:append>
<s:set value="{'aa','bb','cc'}" var="aa"></s:set> <s:set value="{'11','22','33'}" var="bb"></s:set> <s:merge var="all"> <s:param name="one" value="#aa"></s:param> <s:param name="two" value="#bb"></s:param> </s:merge> <s:iterator value="#all" var="t"> <s:property value="#t"/><br> </s:iterator>
4.generater
seperator--分隔符
val--被分隔的字符串
var -- 分隔成的数组名
<s:generator val="'a,b,c,d'" separator="," var="s"></s:generator> <s:iterator value="#s" var="t"> <s:property value="#t"/><br> </s:iterator>
5.sorted
source --- 集合
comparator -- 对比器对象
<s:set value="{'aaaa','bb','ccc','dddd'}" var="arr"></s:set> <s:bean name="com.itnba.maya.domel.Duibiqi" var="duibiqi"></s:bean> <s:sort comparator="duibiqi" var="sss" source="#arr" > <s:iterator var="str"> <s:property value="#str"/><br> </s:iterator> </s:sort> <s:property value="#arr.size()"/>
还需要建一个类,实现Comparator接口。用来做对比器
package com.itnba.maya.domel; import java.util.Comparator; public class Duibiqi implements Comparator<String>{ @Override public int compare(String o1, String o2) { if(o1.length() > o2.length()){ return -1; } else if(o1.length() == o2.length()){ return 0; } else{ return 1; } } }