IT虾米网

OGNL表达式详解

developer 2019年09月30日 编程语言 130 0

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="background-color:#666666;"> 
</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; 
        } 
    } 
 
}

 

 

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

struts中操作request,session详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。