java % 用法_ONGL表达式的用法

什么是ognl?

ognl是struts2中使用的一种表达式语言。

它可以用于在jsp页面,使用标签方便的访问各种对象的属性;

它可以用于,在action中获取传递过来的页面中的参数(并进行类型转换);

它还可以用在struts2的配置文件中!

在ognl的使用中,需要访问到一系列的对象,这些对象都存放在ognl的context(上下文)中,context是一个map结构,存放了一系列的key-value对,实际上,它和actioncontext类是相对应的。在ognl的context中,有一个根对象为valuestack,该对象实际上是一个栈,但在struts 2框架中只存放了一个对象,就是action对象。在action中数据会被压入值栈中,那么在页面中就可以通过ongl表达式取出值栈中的值。

(要了解值栈的概念可以看大佬的这篇 struts2 | 深入浅出理解struts2中的值栈:https://www.jianshu.com/p/82954b841b5e)

ognl表达式的使用

ognl表达式要结合struts的标签库来使用,主要有#、%和$三个符号的使用。

1、#符号的三种用法

1)访问非根元素(在struts中值栈为根对象),如ongl上下文和action上下文,这里#相当于actioncontext.getcontext()

下表有几个actioncontext中有用的属性:

属性

说明

表达式

表达式说明

parameters

包含当前http请求参数的map

#parameters.paramname[0]

相当于request.getparameter("paramname");

request

包含当前httpservletrequest的属性(attribute)的map

#request.key

相当于request.getattribute(“key”)

session

包含当前httpsession的属性(attribute)的map

#session.key

相当于session.getattribute(“key”)

application

包含当前应用的servletcontext的属性(attribute)的map

#application.key

相当于application.getattribute(“key”)

注:attr 用于按request > session > application顺序访问其属性(attribute),#attr.key相当于按顺序在以上三个范围(scope)内读取key对应的属性值,直到找到为止。

2)用于过滤和投影(projecting)集合,

如: persons.{?#this.age>20}。

3)用来构造map,

如下面的: #{’foo1′:’bar1′,’foo2′:’bar2′}。

2、%符号

%符号用于标志的属性为字符串类型时,计算ognl表达式的值,示例:

the value of key "foo1" is

不使用%:

使用%:

运行结果:

326d023c944e7493a54cc4f5b309e4af.png

3、$符号

$符有两种用法:

(1)在国际化资源文件中,引用ognl表达式。

(2)在struts 2配置文件中,引用ognl表达式:

listuser.action?msg=${msg}

10

100

baction-test校验:数字必须为${min}为${max}之间!

需要注意的是:在struts2的标签中不能用el表达式,而可以用ognl表达式。

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值