OGNL 表达式

来源:互联网 发布:安大网络教学综合平台 编辑:程序博客网 时间:2024/06/05 05:06

具体请看范例:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><ol><!-- OGNL: object graph navigation language ,对象图导航语言--><!-- <s:property value="username"/>:这整个是s标签,只有标签中的username才是OGNL表达式 --><li>访问值栈action中的普通属性:username = <s:property value="username"/></li><!-- <s:property value="user。age"/>:只有标签中的 user.age 才是OGNL表达式 ,这里要注意,只有传值的时候才会构建user对象,不传值页面取值为null,--><!-- 当java类中有很多构造方法时,一定要确保有一个空的构造方法,不然就会报错,切记,domain中一定要有一个空构造 --><li>访问值栈中对象的普通属性(setter,getter方法):<s:property value="user.age"/></li><li>访问值栈中对象的普通属性:<s:property value="password.length()"/></li><!-- cat.miaomiao()方法返回一个字符串,那这个值就是一个字符串 --><li>访问值栈中对象的普通方法:<s:property value="cat.miaomiao()"/></li><!-- 在action中定义一个 public String hello(){return "hello word!"} 普通方法--><li>访问值栈中action的普通方法:<s:property value="hello()"/></li><!-- ############################################################################################ --><!-- 假如 NAME 是一个静态属性 --><li>访问静态属性:<s:property value="@com.haizhu.User@NAME"/></li><!-- 假如 CRY() 是一个静态方法,返回一个String类型的结果 --><li>访问静态方法:<s:property value="@com.haizhu.User@CRY()"/></li><!-- ############################################################################################ --><!-- 调用user(String str)构造方法,覆写toString()方法, --><li>访问普通类的构造方法:<s:property value="new com.haizhu.User('haizhu')"/></li><!-- ############################################################################################ --><li>访问list:<s:property value="users"/></li><li>访问list中某个元素:<s:property value="users[0]"/></li><li>访问list中某个属性的集合:<s:property value="users.{age}"/></li><li>访问list中某个属性的集合中的特定值(一般使用第二种方法):<s:property value="users.{age}[0]"/>|<s:property value="users[0].age"/></li><!-- 方法set和方法list不一样,set没有顺序,所以不能使用下标 --><li>访问set:<s:property value="users"/></li><li>访问map:<s:property value="userMap"/></li><!-- 可以使用单引号,也可以使用双引号,使用双引号的时候要使用转义符 --><li>访问map中某个元素:<s:property value="userMap.key1"/>|<s:property value="userMap['key1']"/>|<s:property value="userMap[\"key1\"]"/></li><li>访问map中所有的key:<s:property value="userMap.keys"/></li><li>访问map中所有的value:<s:property value="userMap.values"/></li><li>访问容器的大小:<s:property value="userMap.size()"/></li><!-- ############################################################################################ --><!-- users集合中age等于1的 age集合,也就是1的集合,有几个符合的对象,集合就有几个1 --><li>投影(过滤):<s:property value="users.{?#this.age==1}.{age}"/></li><!-- users集合中age大于1的user中的第一个user的age集合,也就是第一个符合的user的age,不过封装成了集合 --><li>投影(过滤):<s:property value="users.{^#this.age>1}.{age}"/></li><!-- 最后一个符合的user的age集合 --><li>投影(过滤):<s:property value="users.{$#this.age>1}.{age}"/></li><!-- 判断符合条件的这个集合是否为空 --><li>投影(过滤):<s:property value="users.{$#this.age>1}.{age} == null"/></li><!-- ############################################################################################ --><!-- 这是访问action值栈中,从上往下的值 , --><!-- [0],代表action的位置, --><li>中括号[]:<s:property value="[0]"/></li><li>中括号[]:<s:property value="[0].username"/></li></ol></body></html>

怎么样,有没有理解 OGNL 和 EL 表达式的区别?

原创粉丝点击