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="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;
        }
    }

}

原文地址:https://www.cnblogs.com/hq233/p/6576749.html