除了in和not in之外,OGNL还允许使用某个规则获得集合对象的子集,常用的有以下3个相关操作符。
?:获得所有符合逻辑的元素。
^:获得符合逻辑的第一个元素。
$:获得符合逻辑的最后一个元素。
例如代码:
<s:iterator value="books.{?#this.price > 35}">
<s:property value="title" /> - $<s:property value="price" /><br>
</s:iterator>
在上面代码中,直接在集合后紧跟.{}运算符表明用于取出该集合的子集,{}内的表达式用于获取符合条件的元素,this指的是为了从大集合books筛选数据到小集合,需要对大集合books进行迭代,this代表当前迭代的元素。本例的表达式用于获取集合中价格大于35的书集合。
public class BookAction extends ActionSupport {
private List<Book> books;
....
@Override
public String execute() {
books = new LinkedList<Book>();
books.add(new Book("A735619678", "spring", 67));
books.add(new Book("B435555322", "ejb3.0",15));
}
}
分享到:
相关推荐
Struts2 通过 OGNL 表达式实现投影 Struts2 框架中,OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,主要用于在 Struts2 应用程序中进行数据绑定和投影。OGNL 表达式可以用于过滤、投影和排序...
OGNL表达式基本语法与用法详解 OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,广泛应用于Struts 2框架中,用于访问和操作对象图。下面,我们将详细介绍OGNL表达式的基本语法和用法。 一、OGNL...
“%”符号用于告诉执行环境 %{} 里的是 OGNL 表达式,而“#”符号用于访问非根对象、过滤和投影集合、构造 Map 等。 此外,OGNL 表达式还可以用于操作集合对象,例如:books.{?#this.price>35}。在 Struts2 中,...
尽管OGNL提供了强大的功能,但也存在安全风险,特别是当用户输入可以直接参与到OGNL表达式解析时。例如,在Struts2框架中,不恰当的使用可能导致代码注入攻击。因此,开发者需要确保在处理用户输入时进行严格的过滤...
与 Struts 1 相比,Struts 2 标签库使用 OGNL 表达式作为基础,提供了更加强大的功能,例如访问集合和对象的能力。 Struts 2 标签库的特点包括: 1. 统一的标签库:Struts 2 将所有的标签都统一到了一个标签库下,...
综上所述,`#`、`%`和`$`这三个符号在OGNL表达式中扮演着不同的角色,分别用于访问根对象属性、计算字符串类型的表达式值以及引用OGNL表达式。熟练掌握它们的用法可以帮助开发者更高效地利用OGNL表达式进行数据处理...
目录 1. 简介 2. 历史 3. 语法 4. 表达式 常数 属性引用 索引 数组(Array)与列表(List)的索引 JavaBean中的索引属性(Indexed Properties) ...3.1. OGNL 表达式元素 4.1. 集合的特殊伪属性 A.1. OGNL 操作符
6. **OGNL的投影功能**: - 投影允许我们基于集合创建新的视图,比如筛选出满足特定条件的元素,或者只显示集合中的部分属性。 7. **%{}的使用**: - 如果某些Struts2标签不支持OGNL表达式,可以通过`%{}`包裹...
在使用OGNL表达式时,尤其是在Struts2的标签中,需要特别注意`#`、`%`这两个符号的使用。`#`符号有三个主要用途: 1. 访问非根对象,如OGNL上下文和Action上下文,`#`常用于访问ActionContext中的各种上下文属性。 ...
`%`符号主要用于当属性值为字符串类型时计算OGNL表达式,例如在`s:url`标签中,`%{#foobar['foo1']}`会计算并返回`foobar`对象中`foo1`属性的值。 `$`符号在OGNL中有两个关键应用。一是国际化资源文件中引用OGNL...
### Struts2中#与$的区别及OGNL表达式的运用 #### 一、OGNL概述与Struts2中的角色 **OGNL**(Object-Graph Navigation Language)是一种强大的表达式语言,用于获取或设置Java对象图中的属性。在Struts2框架中,OGNL...
7. **示例**:在实际开发中,比如你有一个名为`books`的列表,你可以通过OGNL表达式筛选出价格低于100的书籍,并在页面上展示,如`<s:iterator value="books.{?#this.price<100}" var="book">#{book.title}...
#### 四、OGNL表达式 - **表达式类型**: - **常量**: 数字、字符串等。 - **属性引用**: 访问 JavaBean 的属性。 - **数组和 List 下标**: 使用方括号 `[ ]` 访问数组或 List 的元素。 - **方法调用**: 直接...
在Struts2中,井号(#)、星号(*)和百分号(%)在OGNL表达式中扮演着不同的角色。 首先,井号(#)主要与OGNL上下文和Action上下文关联。在Struts2中,#被用来访问OGNL上下文中的对象,这包括ActionContext,它...
**OGNL (Object Graph Navigation Language)** 是一种强大的表达式语言,允许开发者通过简单的语法来读取和设置 Java 对象的属性值,调用对象的方法,遍历整个对象的结构图,并实现字段类型转换等功能。 OGNL 的...
Struts2 OGNL 表达式总结 OGNL(Object-Graph Navigation Language)是一种基于 Java 的表达式语言,Struts2 框架中使用 OGNL 来访问和操作 ValueStack 中的对象。在 Struts2 中,OGNL 是一个强大的工具,允许...
在Struts2的标签中,OGNL通常与Struts标签结合使用,例如`<s:property value="xx" />`,这里的`value`属性就是一个OGNL表达式,用于输出指定的值。 在OGNL表达式中,`#`、`%`和`$`有特定的含义。`#`主要用于访问上...
在STRUTS2的标签中,`#`,`$`, `%`这三种特殊符号扮演着重要的角色,尤其是在处理OGNL表达式时。下面将详细解释这三个符号的用途。 1. `#` 符号: - **访问非根对象属性**:在STRUTS2中,ActionContext是默认的根...
15. **伪Lambda表达式**:OGNL提供了一种类似于Lambda表达式的功能。 16. **伪属性用于集合**:可以使用特殊的语法来处理集合,如`#list.first`表示获取列表中的第一个元素。 #### 四、表达式 OGNL支持各种类型的...
- **基本单位**:OGNL表达式的最基本单位被称为导航链(Chain),通常包含属性名称、方法调用和数组索引等元素。 - **导航链示例**:`name.toCharArray()[0].numericValue.toString()`,这个表达式的含义是: - ...