用OGNL表达式取值栈中的值

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

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

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

______________________________________________________________________________________________

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

______________________________________________________________________________________________

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

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

Map栈:
放到request域中:
ServletActionContext.getRequest().setAttribute("as_request", "as_request");
获取方式:
<s:property value="#request.as_request"/>
将对象放到request域中:
<span style="white-space:pre">	</span>Person person = new Person();
	person.setName("张三");
	person.setAge(23);
	ServletActionContext.getRequest().setAttribute("person", person);
获取方式:
<span style="white-space:pre">	</span><s:property value="#request.person.name"/>
<span style="white-space:pre">	</span><s:property value="#request.person.age"/>
取parameter域中的值:
<s:property value="#parameters.id[0]"/>
查找各个域中的值:
<s:property value="#attr.a_app"/>
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表达式












  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值