struts2中的标签

Struts2标签库具有以下特性:
1. 与表现层技术无关。在struts2 提供的大部分标签,可以在各种表现层技术中使用,包括最常用的JSP页面,Velocity和FreeMaker等。
2. 采用OGNL语言
3. 通过主题和模板提供更强大的显示支持
4. 提供AJAX的支持


OGNL表达式语言
OGNL语言简介

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。

相对EL表达式,它提供了平时我们需要的一些功能,如:
 支持对象方法调用,如xxx.sayHello();
 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@cn.itcast.Constant@APP_NAME;
 操作集合对象。

标准的OGNL会设定一个根对象(root对象)。假设使用标准OGNL表达式来求值(不使用Struts 2的OGNL表达式),如果OGNL上下文(OgnlContext Map类型)有两个对象:foo对象,在OgnlContext中名称为foo;bar对象,在OgnlContext中名称为bar。同时foo对象被设置为根对象(root)。则利用下面的OGNL表达式求值:
#foo.blah // 返回foo.getBlah()
#bar.blah //返回bar.getBlah()
blah //返回foo.getBlah() ,因为foo为根对象
访问Ognl Context中的对象需要使用#符号标注命名空间,如#bar,如果要访问的属性属于根对象,则可以省略命名空间,直接访问该属性。
访问StackContext中的信息
Struts 2中的OGNL Context是ActionContext,结构示意图如下

由于ValueStack(值栈)是Struts 2中OGNL的根对象,如果用户需要访问值栈中的对象,则可以直接通过下面的代码访问ValueStack(值栈)中的属性:
${foo} //获得值栈中的foo属性

如果访问其他Context中的对象,由于不是根对象,在访问时,需要加#前缀。
 application对象:用于访问ServletContext,例如#application.userName或者#application['userName'],相当于调用Servlet的getAttribute("username")。
 session对象:用来访问HttpSession,例如#session.userName或者#session['userName'],相当于调用session.getAttribute("userName")。
 request对象:用来访问HttpServletRequest属性(attribute)的Map,例如#request.userName或者#request['userName'],相当于调用request.getAttribute("userName")。
 parameters对象:用于访问HTTP的请求参数,例如#parameters.userName或者#parameters['userName'],相当于调用request.getParameter("username")。
 attr对象:用于按page->request->session->application顺序访问其属性。
访问集合元素
如果需要一个集合元素的时候(例如List对象或者Map对象),可以使用OGNL中同集合相关的表达式。
使用如下代码直接生成一个List对象:
<s:set name="list" value="{'zhangming','xiaoi','liming'}" />
<s:iterator value="#list" id="n">
<s:property value="n"/><br>
</s:iterator>

生成一个Map对象:
<s:set name="foobar" value="#{'foo1':'bar1', 'foo2':'bar2'}" />
<s:iterator value="#foobar" id="n" status="st">
<s:property value="key"/>=<s:property value="value"/><br>
</s:iterator>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值