【Struts2框架】第三节OGNL表达式-projection投影

projection(投影):俗话说就是过滤,就是过滤器把符合条件的过滤出来

struts.xml:

<package name="ognl" namespace="/ognl" extends="struts-default">
 <action name="pro" class="cn.edu.hpu.ognl.OgnlAction4">
       	   <result name="success">/ognl.jsp</result>
   	   </action>
</package>

OgnlAction4.java:

package cn.edu.hpu.ognl;

import java.util.ArrayList;

import cn.edu.hpu.mode.User;

import com.opensymphony.xwork2.ActionSupport;

public class OgnlAction4 extends ActionSupport{

	private ArrayList<User> users;

	public OgnlAction4(){
		users=new ArrayList<User>();

		User user1=new User();
		user1.setAge(18);
		User user2=new User();
		user2.setAge(1);
		User user3=new User();
		user3.setAge(21);
		User user4=new User();
		user4.setAge(23);

		users.add(user1);
		users.add(user2);
		users.add(user3);
		users.add(user4);
	}

	public ArrayList<User> getUsers() {
		return users;
	}

	public void setUsers(ArrayList<User> users) {
		this.users = users;
	}

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return "success";
	}

}

链接:

过滤:<a href="<%=basePath%>ognl/pro">OGNL9</a><br/>

结果界面:

<!-- 正则表达式中,"^"代表开头,"$"代表结尾,"?"代表过滤 -->
<li>投影(过滤):<s:property value="users.{?#this.age==1}.{age}"/><br/>
<!-- 找到所有年龄大于1的user,取第一个 -->
<li>投影:<s:property value="users.{^#this.age>1}.{age}"/><br/>
<!-- 找到所有年龄大于1的user,取最后一个 -->
<li>投影:<s:property value="users.{$#this.age>1}.{age}"/><br/>
<!-- 找到所有年龄大于1的集合,判断这个集合是否为空 -->
<li>投影:<s:property value="users.{$#this.age>1}.{age} == null"/><br/>

结果:
投影(过滤):[1]
投影:[18]
投影:[23]

投影:false

转载请注明出处:http://blog.csdn.net/acmman/article/details/47070087

时间: 2024-09-19 09:02:19

【Struts2框架】第三节OGNL表达式-projection投影的相关文章

通过实例深入学习Java的Struts框架中的OGNL表达式使用_java

Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势: 1. 支持对象方法调用,如xxx.doSomeSpecial(): 2. 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME: 3. 支持赋值操作和表达式串联,如price=100, discount=0.8, cal

【Struts2框架】第三节OGNL表达式-OGNL表达式例子2

1.OGNL静态访问例子 struts.xml: <struts> <!--允许静态方法的执行--> <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant> <package name="ognl" namespace="/ognl" extends="struts

【Struts2框架】第三节OGNL表达式-OGNL表达式例子

Object Graph Navigation Language:对象图导航语言,就是用点来访问成员变量 <s:property value="cat.name"/> 例1: struts.xml: <package name="ognl" namespace="/ognl" extends="struts-default"> <action name="og1" class=

struts 2-HTML标签中能应用OGNL表达式吗?

问题描述 HTML标签中能应用OGNL表达式吗? 在一个Struts项目的一个JSP页面中,我有一个div的class是根据request中的某个值来选择,like this: 这样写可以吗?若不可以,应该怎么写呢?谢谢了! 解决方案 干嘛一定要从后台获取呢?就在前台用js解决不行吗? 相关文章 ognl-HTML标签能应用OGNL表达式吗? struts2.0-Struts2 国际化文件中 EL 表达式怎么能执行 方法呢?? struts2-关于ognl怎么写才能不被当成字符串! struts

Struts2框架学习之四:OGNL表达式

前言 OGNL表达式的全称是Object Graph Navigation Language,就是对象导航图语言.使用OGNL表达式可以使用简单的语法设置以及读取Java对象的值,还包括调用对象的方法,实现类型转换等功能.而且,OGNL表达式的强大还不止于此.我们知道在JSP中已经内置了表达式语言,那么使用OGNL表达式的优势是什么呢?主要是语法变得更简单以及功能的更强大.这两点会在后面的内容加以体现. 对象的操作 使用OGNL表达式实现对象的操作,包括以下几个方面: 1.访问JavaBean属

OGNL表达式struts2标签“%,#,$”

OGNL表达式struts2标签"%,#,$" 一.什么是OGNL,有什么特点?         OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言.OGNL有如下特点:         1.支持对象方法调用,形式如:objName.methodName():         2.支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路)]@[方法名 |  值名],例如:

Struts2框架学习之三:result返回结果

前言 Struts 2中的Result是作为返回结果的,时当一个action处理完之后返回字符串的结果码.框架可以根据这个返回的字符串,映射到指定的页面.result元素可以分为两部分:一是结果映射,一部分是返回结果类型. 结果映射 result有两个属性可以配置:name属性和type属性.其中的name属性主要用来指定资源的逻辑名称,实际名称在标签内部指定.type属性就是result的返回类型.要注意的是,这两个属性都不是必须的,当我们没有配置这两个属性的时候,实际上框架为我们指定了默认值

ognl-HTML标签能应用OGNL表达式吗?

问题描述 HTML标签能应用OGNL表达式吗? 在一个Struts项目的一个JSP页面中,我有一个div的class是根据request中的某个值来选择,like this: <div class="%{#request.flag==1 ? 'class-1' : 'class-2'> 这样可以吗?若不可以,应该怎么写呢?多谢各位了! 解决方案 你可以借鉴一下这个 bgcolor="${sta.count%2 == 0?'#8FBC8F':'#E9EDF4'}"

Struts2框架学习之五:通用标签详解

前言 Struts2框架为我们提供了很多标签,这些标签总体上可以分为两类:通用标签和UI标签.而较常使用的又是通用标签,所以文章的内容也是围绕通用标签展开的.通用标签分为两类:数据标签和控制标签.数据标签用于访问值栈中数据,控制标签用于控制呈现页面时数据执行流程.如果需要使用Struts 2框架的标签库,需要在页面的首部引入以下代码:<%@ taglib uri="/struts-tags" prefix="s"%>下面将分别对这两种标签进行说明. 数据