1.“#”主要有三种用途:
  • 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();可以访问这几个ActionContext中的属性。
parameters
#parameters.id[0]作用相当于request.getParameter("id")
request
#request.userName相当于request.getAttribute("userName")
session
#session.userName相当于session.getAttribute("userName")
application
#application.userName相当于application.getAttribute("userName")
attr按request > session > application顺序
#attr.userName相当于按顺序在以上三个scope内读取属性,直到找到为止
  • 用于过滤和投影(projecting)集合,如books.{?#this.price<100}。
  • 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'},在select和radio标签中经常用到。

2.“%”的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。 如:

 在Action中加入
//省略set/get
private Map<String,String> testmap=new HashMap<String,String>(); 在execute中加入:
//ActionContext中的testmap
testmap.put("mp1", "vsmap1");
testmap.put("mp2", "vsmap2");
testmap.put("mp3", "vsmap3");
testmap.put("mp4", "vsmap5555"); 在结果页面加入: 遍历actionContext中的testmap<p>
<s:iterator value="testmap">
<s:property value="key"/>=<s:property value="value" /><br>
</s:iterator> <h3>-----------------s:property--------------------------%的用途</h3> //property 有没%号都一样。解析为value值
<p>用点号. :<s:property value="testmap.mp1"/></p>
<p>用方括号[] :<s:property value="testmap['mp1']"/></p>
<p>有%号:<s:property value="%{testmap['mp1']}" /></p> <h3>-----------------s:url--------------------------%的用途</h3>
<p>用点号. :<s:url value="testmap.mp1"/></p>
<p>用方括号[] :<s:url value="testmap['mp1']"/></p> //直接显示为testmap['mp1']
<p>有%号:<s:url value="%{testmap['mp1']}" /></p>

结果如下:

3.“$”有两个主要的用途

  • 用于在国际化资源文件中,引用OGNL表达式。
  • EL表达式 ${sessionScope.user.sex}等于${sessionScope.user["sex"]} 。

如果没有指定scope,那么${username}查找顺序是Page---Request---Session---Application

struts2 OGNL(Object-Graph Navigation Language) 井号,星号,百分号的更多相关文章

  1. Struts_OGNL(Object Graph Navigation Language) 对象图导航语言

    1.访问值栈中的action的普通属性: 请求: <a href="ognl.action?username=u&password=p">访问属性</a& ...

  2. OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取 ...

  3. OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言,使页面更简洁;

    OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言,使页面更简洁: 支持运算符(如+-*/),比普通的标志具有更高的自由度和更强的功能 ...

  4. Struts2 OGNL使用详解(转)

    OGNL OGNL ( Object Graph Navigation Language ),对象图导航语言.这是一种强大的表达式语言,通过它可以非常方便的来操作对象属性. 在 Struts2 中,O ...

  5. 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】

    一.struts2系统验证 1.基于struts2系统验证的方式实际上就是通过配置xml文件的方式达到验证的目的. 2.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...

  6. struts2 OGNL表达式

    一.OGNL OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对 ...

  7. java:struts框架5(Converter,Validation,Tags(Object-Graph Navigation Language))

    1.Converter: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTY ...

  8. Struts2(Ognl)

    OGNL(Object-Graph Navigation Language)全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整 ...

  9. struts2 OGNL 表达式

    一.Struts 2支持以下几种表达式语言: OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言:JSTL(JSP Standard ...

随机推荐

  1. Java调用MQ队列

    IBM MQ 6.0中设置两个队列,(远程队列.通道之类都不设置). 队列管理器是XIR_QM_1502 队列名称是ESBREQ IP地址是10.23.117.134(远程的一台电脑,跟我的电脑不在一 ...

  2. Kafka consumer group位移重设

    本文阐述如何使用Kafka自带的kafka-consumer-groups.sh脚本随意设置消费者组(consumer group)的位移.需要特别强调的是, 这是0.11.0.0版本提供的新功能且只 ...

  3. 十款不错的Hybrid App移动开发框架

    本文转载至http://www.pureasme.com/blog/2015/0419476.html ionic 是个高级的 HTML5 移动端应用框架,是个很漂亮的使用 HTML5 开发混合移动应 ...

  4. Lua中的closure(闭合函数)

    词法域:若将一个函数写在另一个函数之内,那么这个位于内部的函数便可以访问外部函数中的局部变量,这项特征称之为“词法域”. 例:假设有一个学生姓名的列表和一个对应于没个姓名的年级列表,需要根据每个学生的 ...

  5. C#实现HTTP请求文件下载,GET、POST请求的数据流接收

    做项目的时候由于插件Phaser请求audio的时候,不允许跨域,具体提示====> 已拦截跨源请求:同源策略禁止读取位于 http://ttyouni.com/1.mp3 的远程资源.(原因: ...

  6. 获取对象属性值=NPOI EXPORT

    使用dll ==== NPOI.dll 获取属性,设置属性=参考:http://blog.csdn.net/cestarme/article/details/6548126 额外的: 导出的时候碰到一 ...

  7. Material Design系列第七篇——Maintaining Compatibility

    Maintaining Compatibility This lesson teaches you to Define Alternative Styles Provide Alternative L ...

  8. Qt编写密钥生成器+使用demo(开源)

    在很多商业软件中,需要提供一些可以试运行的版本,这样就需要配套密钥机制来控制,纵观大部分的试用版软件,基本上采用以下几种机制来控制.1:远程联网激活,每次启动都联网查看使用时间等,这种方法最完美,缺点 ...

  9. 【Java基础系列】Java IO系统

    前言 创建好的输入/输出系统不仅要考虑三种不同种类的IO系统(文件,控制台,网络连接)还需要通过大量不同的方式与他们通信(顺序,随机访问,二进制,字符,按行,按字等等). 一.输入和输出 Java的I ...

  10. List的五种去重方式

    //set集合去重,不改变原有的顺序 public static void pastLeep1(List<String> list){ System.out.println("l ...