读书人

struts2中ognl表达式的懂得和用法

发布时间: 2012-09-22 21:54:54 作者: rapoo

struts2中ognl表达式的理解和用法
ognl表达式的使用如下面的例子:
总的来说,就是
action里面的私有属性,在页面里面我们可以用EL表达式取到,也可以
<s:property value="name"/>取到,不过action里面的私有属性必须要有自己的set|get方法
这样底层的拦截器才能对其数据封装,页面也才能取得到,这样在struts.xml的配置里面我们也是可以使用EL表达式来获得action类的属性变量值(struts2里面的action可以implements Action接口,也可以是一个普通的java类,不过方法的必须要有返回值,且返回类型为String型。在配置struts.xml的时候对action的进行注册,但是package必须要继承struts-default)
因为:

 <default-class-ref />

这样我们就可以在action页面的获取页面提交的属性值。
同样我们也可以使用ActionContext.getContext()这个对象来获得页面的请求的域,和action的配置信息页面的属性必需在action里面进行set|get方法后才能在action里面获取值,页面也可以取到服务器返回的
他的属性,而这个属性范围为root对象。
同时还有request|session|appliaction三个域都放在valuestack里面,而页面获取对象时,root对象可以直接用struts标签获取,其他三个对象要在他的name名前面加上‘#’才能取出来
package tarena.actions;import java.util.ArrayList;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;public class OgnlAction {private String name;private List list = new ArrayList();public List getList() {return list;}public void setList(List list) {this.list = list;}public String execute(){name = "张三";//为name属性设置值Person p = new Person("1001","男");//为list属性添加一个Person对象list.add(p);//获取request,并添加信息//Map request = (Map)ActionContext.getContext().get("request");HttpServletRequest request1 = ServletActionContext.getRequest();request1.setAttribute("name", "request value");//获取session,并添加信息Map session = ActionContext.getContext().getSession();session.put("name", "session value");//获取application,并添加信息Map application = ActionContext.getContext().getApplication();application.put("name", "application value");return "ognl";}public String getName() {return name;}public void setName(String name) {this.name = name;}}
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>   <%@ taglib uri="/struts-tags" prefix="s" %><!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><h1>${name}</h1><hr>获取Action属性:<s:property value="name"/><br>获取Reqeust属性:<s:property value="#request.name"/><br>获取Session属性:<s:property value="#session.name"/><br>获取Application属性:<s:property value="#application.name"/><br><hr>获取Action中List属性信息<s:property value="list[0].no"/><s:property value="list[0].sex"/><hr>方法调用<s:property value="name.length()"/><br>静态属性:<s:property value="@java.lang.Math@PI"></s:property></body></html>

读书人网 >软件架构设计

热点推荐