Struts2的表达式语言OGNL、JSTL、Groovy

Struts2支持以下几种表达式语言:

1.OGNL(Object-GraphNavigationLanguage),可以方便地操作对象属性的开源表达式语言;

2.JSTL(JSPStandardTagLibrary),JSP2.0集成的标准的表达式语言;

3.Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;

4.Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。

Struts2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:

1.支持对象方法调用,如xxx.doSomeSpecial();

2.支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名],例如:@java.lang.String@format('foo%s','bar')或@tutorial.MyConstant@APP_NAME;

3.支持赋值操作和表达式串联,如price=100,discount=0.8,calculatePrice(),这个表达式会返回80;

4.访问OGNL上下文(OGNLcontext)和ActionContext;

5.操作集合对象。

OGNL是ObjectGraphNavigationLanguage的缩写,与JSP,JSF相比,OGNL是一种功能非常强大的针对Java的表达式语言(EL),它可用来读取和更新Java对象的属性。

OGNL可以用在以下方面:

-用做数据绑定语言用来绑定GUI元素(textfield,combobox等)到模型对象

-用做数据源语言用来映射数据库表到表模型对象

-用做数据绑定语言用来绑定web组件到数据模型(WebOGNL,Tapestry,WebWork等)

-提供类似JakartaCommonsBeanUtils所提供的功能(读取Java对象的属性)

OGNL表达式语法:

Java标准类型:

bool类型:true,false

int类型:10,0xABCD等

long类型:100L

float类型:1.0,0.5F等

double类型:0.01D

char类型:'A','\uFFFF'等

字符串类型:"HelloWorld!"

null

OGNL独自类型:

例:10.01B,相当于java.math.BigDecimal

例:100000H,相当于java.math.BigInteger

OGNL表达式中能使用的操作符号:

OGNL表达式中能使用的操作符基本跟Java里的操作符一样,除了能使用+,-,*,/,++,--,==,!=,=等操作符之外,还能使用mod,in,notin等

变量的引用:

使用方法:#变量名

例:#this,#user.name

对静态方法或变量的访问:

@mypkg.MyClass@myVar

@mypkg.MyClass@myMethod()

读取变量值:

例:user.address.countryName

方法调用:

例:user.getName()

对象的创建:

newjava.net.URL("http://localhost/")

List表达式例:

{"green","red","blue"}

Map表达式例:

#{"key1":"value1","key2":"value2","key3":"value3"}

对map引用,例:map.key1

等等。

OGNL官方首页:

http://www.ognl.org/

OGNL官方文档(2.6.9)

OGNLLanguageGuide(2.6.9)

<@s.radioname="user.sex"value="%{user==null||user.sex==null?'true':user.sex}"list=r'#{"true":"男","false":"女"}'required="true"/>

相关推荐