gnl总结(#,%,$)
来源:互联网 发布:算法的时间复杂度分析 编辑:程序博客网 时间:2024/05/23 23:55
Ognl表达式struts标签“%,#,$”
1、什么是Ognl?
OGNL(Object-Graphic Navigation Language),对象图道行语言。是一种可以方便操作对象属性的开源表达式语言。
2、特点?
a、支持对象的方法调用,形式,eg:objName.methodName();
b、支持静态类的方法调用和值访问,expression:@【类全名(包括包路径)】@【方法名|值名】,eg:@tutorial.MyConstant@App_NAME;
c、支持赋值操作和表达式串联,eg:price=100,discount=80,calculatePrice()//返回80???
d、访问OGNL上下文(OGNL context)和ActionContext
e、操作集合对象
3、使用OGNL表达式
1)“#”符号有三种用途
a、访问非根对象(struts中值栈为根对象),eg:OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
名称 作用域
eg:
1-1)parameters :包含当前HTTP请求参数的Map
#parameters.id[0]=>作用相当于request.getParameter("id")
1-2)request:包含当前HttpServletRequest的属性(attribute)的Map
#request.userName=>作用相当于request.getAttribute("userName");
1-3)session:包含当前HttpSession属性(attribute)的Map
#session.userName=>session.getAttribute("userName");
1-4)application:包含当前应用的ServletContext的属性(attribute)的Map
#application.userName=>application.getAttribute("userName");
notice:attr用于按request>session>application顺序访问其属性(attribute),#attr.userName;构造Map:{'foo1':'bar1','foo2':'bar2'}
b、用于过滤和投影
eg:books.{?#this.price>35}
c、用于构建Map集合
在页面上取一个Map的值:
eg:<s:property value="#myMap['foo1']"/>
2)“%”符号的用途是在标签的属性被理解为字符串类型时,告诉执行环境%{}里的是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来执行。%{}就是起这个作用。
eg:
<s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>
<s:property value="#myMap['key1']"/>
<s:url value="#myMap['key1']"> //输出:#myMap['key1']
<s:url value="%{#myMap['key1']}"//输出:value1
notice:struts2里不同的标签对于ognl表达式的理解是不一样的
3)“$”符号有两种用途
3-1)在国际化资源文件中,引用OGNL表达式
3-2)在struts2配置文件中,引用OGNL表达式
eg:
- <action name="saveUser" class="userAction" method="save">
- <result type="redirect">listUser.action?msg=${msg}</result>
- </action>
- <action name="saveUser" class="userAction" method="save">
- <result type="redirect">listUser.action?msg=${msg}</result>
- </action> 愿望:http://www.cnblogs.com/luoxing/archive/2012/02/20/2359603.html
- gnl总结(#,%,$)
- gnl's not lao 道德经 英文版
- 粒子滤波总结(摘来总结)
- 实习总结(十七)---实习总结
- 粒子滤波总结(摘来总结)
- (android实战总结)IO存储总结
- 粒子滤波总结(摘来总结)
- C#加密方法总结(总结)
- SQL技术总结(耿建玲视频总结)
- IOCP模型总结(总结回顾)
- 网络流总结(边学边总结)
- 粒子滤波总结(摘来总结)
- JavaScript总结(终极大总结)
- 【总结】Java基础总结(1)
- AFNetWorking使用总结(待总结。。。)
- 排序总结(总结的非常好)
- LeetCode总结,位运算总结(该)
- 7.27~7.28总结(不包括题目总结)
- 简单解决sublime 中文输入问题
- 解决VMware下centOS 7无法访问网络的问题经过
- Machine Learning--Decision Tree
- 使用PreparedStatement操作数据库
- MySQL高级
- gnl总结(#,%,$)
- CentOS 7 使用阿里云的yum源
- 网页背景图不够大而重复显示的解决方案
- USB驱动——描述符、URB、管道
- 安卓的字体设置
- 编程的那些锯齿
- 11
- C/C++笔记(C语言重要问题,指针与数组篇)
- 70. Climbing Stairs