ognl表达式值栈_ognl表达式是什么_ognl表达式(6)

电脑杂谈  发布时间:2017-02-12 23:06:09  来源:网络整理

名称作用例子

parameters 包含当前HTTP请求参数的Map#parameters.id[0]作用相当于request.getParameter("id")

request包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute("userName")

session包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName")

application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")

注:attr 用于按request > session > application顺序访问其属性(attribute),#attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止。用于过滤和投影(projecting)集合,如books.{?#this.price<100};构造Map,如#{'foo1':'bar1',

'foo2':'bar2'}。

(2)、用于过滤和投影(projecting)集合,如: books.{?#this.price>35}

books.{?#this.price>35}

(3)、构造Map,如: #{'foo1':'bar1', 'foo2':'bar2'}

#{'foo1':'bar1', 'foo2':'bar2'}这种方式常用在给radio或select、checkbox等标签赋上。ognl表达式如果要在页面中取一个map的可以这样写:

<s:property value="#myMap['foo1']"/>

<s:property value="#myMap['foo1']"/>

2、“%”符号的用途是在标签的属性被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。

这是一开始最让我不能理解的符号,原因是一些相关资源在表述时不太准备,经过一翻痛苦的探索,终于明白了它的用途。实际上就是让被理解为字符串的表达式,被真正当成ognl来执行。很有点类javascript里面的eval_r()功能,例如 :

var oDiv = eval_r("document.all.div"index)

var oDiv = eval_r("document.all.div"index)

当index变量为1时,语句就会被当作var oDiv = document.all.div1 var oDiv = document.all.div1来执行。%{}就是起这个作用。举例:

<s:set value="#{'key1':'value1','key2':'value2'}"/>

<s:property value="#myMap['key1']"/>

<s:url value="#myMap['key1']" />

<s:set value="#{'key1':'value1','key2':'value2'}"/>


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-32070-6.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...