关于struts的ognl表达式
作者:互联网
使用struts2标签必须先导入标签库,在JSP页面中使用如下代码来导入struts2标签库:
<%@taglib prefix=”s” uri=”/struts-tags”%>
OGNL表达式语言
OGNL是一个对象,属性的查询语言。在OGNL中有一个类型为Map的Context(称为上下文),在这个上下文中有一个根元素(root),对根元素的属性的访问可以直接使用属性名字,但是对于其他非根元素中的属性的访问必须加上特殊符号#。
OGNL context Map包括:
application,session,value stack(root),require,parameters,attr
在Struts2中上下文为ActionContext,根元素位Value Stack(值堆栈,值堆栈代表了一族对象而不是一个对象,其中Action类的实例也属于值堆栈的一个)。因为Action实例被放在Value Stack中,而Value Stack又是根元素(root)中的一个,所以对Action中的属性的访问可以不使用标记#,而对其他的访问都必须使用#标记。例如:#foo.blah,表示取得Context中名字为foo对象的blah属性。相当于执行foo.getBlah()方法。
parameters对象,用于访问http请求参数,例如#parameters[‘foo’]或#parameters.foo用于范围调用HttpservletRequest的getParameter(“foo”)方法的返回值。
request对象,用于访问httpServletRequest属性。例如:#request[‘foo’]或#request.foo,用于返回调用HttpServletRequest的getAttribute(“foo”)方法的返回值。
session对象,用于访问HttpSession的属性。例如:#session[‘foo’]或#session.foo
application对象,用于访问ServletContext的属性。例如:#application[‘foo’]或#application.foo
attr对象,用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止。
6、迭代标签
语法:
三种给,标签传值的方式
<s:iterator value="#request.userList">
<tr align="center">
<td><s:property value="id"/> : <s:property value="username"/></td>
<td><s:property value="age"/></td>
<td><s:property value="sex"/></td>
<td><s:property value="address"/></td>
<td>
<s:a href="userAction!addUser.action">添加</s:a> |
//第一种方式,在标签内使用标签时用%
<s:a href="userAction!loadUser.action?user.id=%{id}">编辑</s:a> |
//第二种方式:使用<s:url>标签解决
<s:url id="idUrl" action="userAction!delUser.action">
<s:param name="user.id" value="%{id}"></s:param>
</s:url>
<s:a href="%{idUrl}">删除</s:a>
//第三种:直接加入
<a href="<s:url action="userAction!delUser.action">
<s:param name="user.id" value="id"/>
</s:url>">删除2
</a>
</td>
</tr>
</s:iterator>
时间格式化
<s:date name="info.createTime" format="yyyy-MM-dd HH:mm"/>
标签:application,标签,struts,访问,session,ognl,foo,表达式,属性 来源: https://blog.51cto.com/u_12784254/2875138