关于ActionContext.getContext()取得的值是什么,和struts2如何获取request,session,appliaction作用域

今天做struts时发现了一个bug。

有个tea对象,该对象包含id,name等属性,由于项目的需要,我希望把它存入到request作用域里,查阅资料后网上有人说是通过ActionContext.getContext().put("tea“, tea);的方式可以实现存入request作用域的效果。

但是实际发现当我在jsp页面上写下这样语句取得request域里tea的id:<s:property value="#request.tea.id"/>,实际结果为空。

为什么会这样呢?再次查阅多方资料后,发现其实ActionContext.getContext()其实上获得的是ValueStack,而非我们想象中的request作用域,因此以上语句得不到我们想要的结果。

下面给出struts2种获取valuestack,request,session,appliaction作用域的方法:

package com.hcj.action.database.admin;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Test extends ActionSupport {
	private ActionContext context;
    private Map request;
    private Map session;
    private Map application;
	public ActionContext getContext() {
		return context;
	}
	public void setContext(ActionContext context) {
		this.context = context;
	}
	public Map getRequest() {
		return request;
	}
	public void setRequest(Map request) {
		this.request = request;
	}
	public Map getSession() {
		return session;
	}
	public void setSession(Map session) {
		this.session = session;
	}
	public Map getApplication() {
		return application;
	}
	public void setApplication(Map application) {
		this.application = application;
	}
	@Override
	public String execute() throws Exception {
		this.context = ActionContext.getContext();
        this.request = (Map)this.context.get("request");
        this.session = this.context.getSession();
        this.application = this.context.getApplication();
        this.context.put("contenx", "我是valueStack");
        this.request.put("request", "我是request");
        this.session.put("session", "我是session");
        this.application.put("application", "我是application");
        return SUCCESS;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值