struts2 ValueStack的set方法与setValue方法的区别

struts2中 ValueStack的set方法与setValue方法的区别呢?

示例代码:

ActionContext.getContext().getValueStack().setValue("myname22", "ttt");

 区别

(1)setValue 方法必须要求有该属性的setter方法,否则会报错:

Error setting expression'myname22' with value 'ttt' - [unknown location]

set方法设置的属性与该action没有任何关系,所以就算action中没有该属性的setter方法,调用

ActionContext.getContext().getValueStack().set("myname22", "ttt");

 

也不会报错。

 

 

 

(2)setValue方法设置的是action的属性(action中有属性myname22),在value stack 中对应的是action的属性;

 

而set方法设置的属性会放在一个hashmap中,与当前的action没有任何瓜葛,但是两者都在value stack中,set方法设置的属性可以通过 <s:property value="myname22"  />来取值。

 

 

 

共同点

 

(1)setValue和set方法设置的属性可以通过

 

 

String myname2=(String)ServletActionContext.getContext().getValueStack().findValue("myname22");

 

 

来取值;

 

 

(2)在result指向的JSP页面中都可以通过 <s:property value="myname22"  />来取值(setValue方法设置的属性必须要有对应的getter方法)

 

action代码:

package example;

import org.apache.struts2.ServletActionContext;

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

public class GetValueAction extends ActionSupport {
	private static final long serialVersionUID = 4865100826143278474L;
	private String myname=null;
//	private String myname22;
	@Override
	public String execute() throws Exception {
		ActionContext.getContext().getValueStack().set("myname22", "ttt");
		String myname2=(String)ServletActionContext.getContext().getValueStack().findValue("myname22");
//		System.out.println("myname2: "+this.myname);
		return super.execute();
	}

	public String getMyname() {
		return myname;
	}

	public void setMyname(String myname) {
		this.myname = myname;
	}

//	public String getMyname22() {
//		return myname22;
//	}
//
//	public void setMyname22(String myname22) {
//		System.out.println("abc:"+myname22);
//		this.myname22 = myname22;
//	}
	
//	public String getMyname22() {
//		return myname22;
//	}
	
	
}

 总结:set方法和setValue方法设置的属性都可以通过<s:property value="myname22"  />取值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值