用OGNL表达式取值栈中的值

首先,简单介绍一下Struts2标签

使用Struts2标签,需要先在页面中引入Struts2标签库:

<%@ taglib prefix="s" uri="/struts-tags" %>
标签库的位置在struts2-core-2.3.1.2.jar包中的META-INF/struts-tags.tld

______________________________________________________________________________________________

标签是一个超链接,其作用可以显示出值栈的内容,可用于调试。

______________________________________________________________________________________________

用OGNL表达式显示值栈中的数据的时候:

  • 如果要访问对象栈中的值,直接访问属性即可。
  • 如果要访问Map栈中的值,需要加#。
______________________________________________________________________________________________
是一个输出标签:
说明:如果不写value属性,则直接输出栈顶元素。
______________________________________________________________________________________________
下面列举了一些将数据存放在值栈中的不同域中,在前台获取的方法:
对象栈:
放在栈顶:
ActionContext.getContext().getValueStack().push("aaaaaa");
获取方式:
将对象放到栈顶:
	Person person = new Person();
	person.setName("张三");
	person.setAge(1);
	ActionContext.getContext().getValueStack().push(person);
获取方式:
补充:如果在对象栈中出现相同的元素,则会从上往下找,直到找到就停止了。

Map栈:
放到request域中:
ServletActionContext.getRequest().setAttribute("as_request", "as_request");
获取方式:
将对象放到request域中:
	Person person = new Person();
	person.setName("张三");
	person.setAge(23);
	ServletActionContext.getRequest().setAttribute("person", person);
获取方式:
	
	
取parameter域中的值:
查找各个域中的值:
attr会按照request>session>application的顺序查找属性,直到找到为止。
__________________________________________________________________________________________
OGNL表达式:
OGNL表达式(Object-Graph Navigation Language)是对象图像化导航语言。
OGNL表达式有一下特点:
  • 支持对象方法调用:objName.methodName();
  • 支持类静态的方法调用和值访问

@[类全名(包括包路经)]
@[方法名 | 值名]
例如:
@java.lang.String@format('foo%s','bar')
@tutorial.MyConstant@APP_NAME;

  • 支持赋值操作和表达式串联,例如:
price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
  • 访问OGNL上下文(OGNL context)和ActionContext
  • 操作集合对象
说明OGNL中几个符号的含义:
%的的用途是将字符串当成OGNL表达式解析。
$符号主要有两个用途:
用于在国际化配置文件中应用OGNL表达式
用于在struts配置文件引用OGNL表达式












你可能感兴趣的:(Struts2)