`
windywindy
  • 浏览: 170673 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ognl表达式用法笔记

JDK 
阅读更多
User对象属性获取
如User中有username和password字段
获取username属性<s:property value="user.username" />
获取password属性<s:property value="user.password" />

若User中又包含定义了address对象,address对象中包含有addr属性,则可以这样访问
获取addr属性<s:property value="user.address.addr" />

若User中还包含一个get()的普通方法,可以这样调用
<s:property value="user.get()" />
以上是调用值栈中对象的普通方法,user为值栈中的对象

调用action中的静态方法get(),普通方法不能直接调用
<s:property value="@com.netshuai.action.ManagerAction@get()" />
以上为调用非值栈中的静态方法

调用JDK中类的静态方法<s:property value="@java.lang.Math@floor(32.56)" />
上例也可写成<s:property value="@@floor(32.56)" />,省略前面的类则默认使用java.lang.Math类,其他类不可省略

调用普通类中的静态属性<s:property value="@com.netshuai.model.Address@city" />
address中的city静态属性要用public声明

调用普通类的构造方法,如构造方法为
public User(String username)
{
      this.username=username;
}
调用方法为<s:property value="new com.netshuai.model.User('hello').username" />,则返回username值为hello

获取List<s:property value="list" />
获取List中的某一个元素<s:property value="list[0]" />
获取List的大小<s:property value="list.size" />
获取Set<s:property value="set" />
无法获取Set中的某一个元素,因为Set没有顺序
获取Map<s:property value="map" />
获取Map中所有key的值<s:property value="map.keys" />
获取Map中所有value的值<s:property value="map.values" />
获取Map中的某一个元素<s:property value="map['k1']" />

获取List所有对象<s:property value="listObject" />,需要重写toString()方法才能正常显示对象的值
利用投影获取List中所有对象的username属性<s:property value="listObject.{username}" />
利用投影获取List中第一个对象的username属性<s:property value="listObject.{username}[0]" />
利用选择获取List中年龄大于30的对象<s:property value="listObject.{?#this.age>30}" />
利用选择获取List中年龄大于30的对象的username<s:property value="listObject.{?#this.age>30}.{username}" />
利用选择获取List中年龄大于30的第一个对象的username<s:property value="listObject.{?#this.age>30}.{username}[0]" />或<s:property value="listObject.{^#this.age>30}.{username}" />
利用选择获取List中年龄大于30的最后一个对象的username<s:property value="listObject.{$#this.age>30}.{username}" />

获取parameters中的属性<s:property value="#parameters.name" />
获取request中的属性<s:property value="#request.name" />
获取session中的属性<s:property value="#session.name" />
获取application中的属性<s:property value="#application.name" />
<s:property value="#attr.name" />按顺序遍历上面四个对象,然后返回首先找到的值

%{}可以取出存在值堆栈中的Action对象,直接调用它的方法,如%{getText('key')}可以取出国际化信息

${}可以用在国际化资源文件中和struts2配置文件中

使用top获取值栈中第二个对象<s:property value="[1].top.user"/>
使用top获取值栈中第二个对象的属性<s:property value="[1].user"/>

调用值栈中action的静态方法get()<s:property value="@vs@get()"/>,vs也可写做vs1
调用值栈中第二个action的静态方法get()<s:property value="@vs2@get()"/>

将一个对象放入值栈
ActionContext.getContext().getValueStack().push(user);
分享到:
评论

相关推荐

    OGNL学习笔记,包含struts2中ognl的各种用法

    在示例代码中,`&lt;s:property&gt;`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别获取了Request、Session和Application范围内的属性值。这展示了OGNL如何灵活地访问不同级别的数据。 其次...

    struts2 OGNL语言学习笔记

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

    OGNL源代码以及个人笔记

    例如,笔记可能解释了OGNL如何处理上下文变量、如何进行类型转换、如何自定义方法解析等。这些内容对于深入理解和使用OGNL至关重要。 对于学习者而言,研究OGNL的源代码可以帮助理解其内部机制,提升编程技能。你...

    OGNL笔记

    开发过程中,有一些工具可以帮助我们更好地使用OGNL,例如表达式测试工具,可以在不涉及整个项目环境的情况下测试OGNL表达式的正确性。还有一些IDE插件提供语法高亮和自动完成,提升开发效率。 总的来说,OGNL是...

    Ognl_JSTL_学习笔记.zip

    这样,开发者可以在JSP页面上直接使用Ognl表达式来显示动态数据,而无需在JSP页面中混杂大量的Java代码。 **学习笔记中的关键点** 1. **OGNL基础**:理解OGNL的基本语法,包括属性访问、方法调用、集合操作和类型...

    struts2 ognl

    在Struts2中,OGNL还被用作默认的表示层语言,这意味着在视图层(如JSP)可以直接使用OGNL表达式来动态地显示数据。例如,`&lt;s:property value="%{user.name}" /&gt;`会输出`user`对象的`name`属性值。这种特性使得...

    Struts2_OGNL 笔记

    例如,`&lt;s:property value="xx" /&gt;`标签中的`value="xx"`就是一个OGNL表达式,用于显示对象`xx`的值。 2. OGNL的关键符号: 在OGNL中,`#`、`%`和`$`有特定含义: - `#`:用于访问上下文对象,例如`#request`、`#...

    struts2的学习笔记+测试源代码

    Struts2是一个强大的Java web...总之,Struts2的OGNL表达式是实现数据绑定和控制逻辑的关键工具,理解和掌握其用法对于提升Java web开发能力至关重要。通过深入学习和实践,你将能够编写出更加高效、灵活的应用程序。

    赵栋struts2 笔记

    使用`#`符号在Ognl表达式中表示Map集合,这样可以明确区分对象栈和Map。例如,`#{myAction.property}`表示在Action对象中查找名为`property`的属性。当需要在不同作用域中存储和获取数据时,Ognl表达式是非常有用的...

    传智168期JavaEE struts2杜宏 day32~day33笔记

    为了更好地理解OGNL在Struts2中的应用,可以通过具体的示例来展示其使用方法: 1. **对象方法调用**: ```xml ()"/&gt; ``` 这里使用了OGNL表达式`'abc'.length()`来计算字符串"abc"的长度。 2. **静态方法调用**:...

    【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法

    Struts2基于OGNL(Object-Graph Navigation Language)表达式语言,可以直接在Action方法的参数中使用ognl表达式来获取表单数据。这种方式更加灵活,可以处理动态或复杂的表单数据。 ```java public class ...

    Java相关课程系列笔记之十三Struts2学习笔记.doc

    在本篇笔记中,我们将深入探讨Struts2的核心概念和使用方法。 **一、Struts2概述** 1.1 为什么要用Struts? 在传统的JSP开发中,模型与视图、控制器的职责混杂,导致代码维护困难。Struts2作为MVC框架,将业务逻辑...

    Java相关课程系列笔记之十三Struts2学习笔记

    本笔记将深入探讨Struts2的核心概念、发展历程、使用方法以及与OGNL(Object-Graph Navigation Language)的结合应用。 **一、Struts2概述** 1.1 为什么要用Struts 在Java Web开发中,Struts2作为MVC框架,能够...

    struts学习笔记(4)

    ### Struts 学习笔记(4):深入理解 OGNL 表达式与 Struts2 标签 #### 一、OGNL 表达式简介 **OGNL**(Object Graph Navigation Language)是一种功能强大的表达式语言,在 Struts2 框架中扮演着非常重要的角色。...

    北京圣思园Struts2 全套笔记 课件 详解

    学习者将能够了解Struts2的架构,学会如何创建Action,配置struts.xml,编写拦截器,使用OGNL表达式,以及如何处理异常和实现视图的多样化。此外,课程可能还会涉及Struts2的安全问题和最佳实践,如防止XSS、CSRF等...

    struts2 学习重点笔记

    - **应用场景**:在视图层使用 OGNL 表达式简化数据访问。 **4.2 自定义拦截器** - **定义**:根据特定需求编写拦截器,扩展框架功能。 - **编写步骤**: 1. 创建拦截器类,继承 Interceptor 接口。 2. 实现拦截...

    struts2学习笔记

    - 示例:`&lt;property value="Ognl表达式"/&gt;` - **** 标签:用于遍历集合。 - 示例:`&lt;iterator value="Ognl表达式"&gt;` 每次迭代时,当前元素都会被放置到 **ValueStack** 中,以便在循环体中使用。 - **** 等标签:...

    黑马程序员Struts2笔记

    8. **OGNL表达式语言** OGNL(Object-Graph Navigation Language)是Struts2中的默认表示层语言,用于数据绑定和表达式计算。通过OGNL,我们可以方便地在Action与视图之间传递数据。 9. **Struts2的插件** Struts...

    Struts2学习笔记

    以上内容是Struts2学习笔记的概述,涵盖了Struts2的基础概念、发展历程、使用方法以及核心组件OGNL的介绍。深入学习Struts2将有助于提升Java Web开发能力,更好地理解和构建MVC架构的应用程序。

    struts2笔记 风中叶

    开发者可以在JSP页面中直接使用OGNL表达式来访问Action上下文中的数据。 最后,笔记可能会提及Struts2与其他技术的集成,如Spring框架的集成,允许开发者更方便地管理Action的依赖注入,以及与Hibernate等ORM工具的...

Global site tag (gtag.js) - Google Analytics