Struts2中Action接收参数的方法主要有以下三种:
接收值
1.使用Action的属性接收参数(最原始的方式):
a.定义:在Action类中定义属性,创建get和set方法;
b.接收:通过属性接收参数,如:userName;
c.发送:使用属性名传递参数,如:user1!add?userName=jim;
2.使用DomainModel接收参数:
a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法;
b.接收:通过对象的属性接收参数,如:user.getUserName();
c.发送:使用对象的属性传递参数,如:user2!add?user.userName=mike;
3.使用ModelDriven接收参数(现在用的比较多的方式):
a.定义:Action实现ModelDriven泛型接口,定义Model类的对象(必须new),通过getModel方法返回该对象;
b.接收:通过对象的属性接收参数,如:user.getUserName();
c.发送:直接使用属性名传递参数,如:user2!add?userName=tom
用值:
不是在action类中时,其他页面jsp怎样用struts标签取得值栈中的值?
在action中定义的setget属性的值放在了值栈中,在jsp中可以直接取得它的值
在action中可以把属性值放在request和session中
方法为servletactioncontext.getContext().getrequest.put("name"value)
ActionContext.getContext().getSession().put("name", value);
在一个页面中定义application里的变量,
jsp取值时用#session#request#application方式取其各自范围里面的值,
<s:property value="#application.变量的引用name"/>
<s:property value="#session.变量的引用name"/>
<s:property value="#request.变量的引用name"/>
值栈中的直接取其值:<s:property value="变量名"/>
值栈
值栈中的值有action的所有属性的值,
根据struts2的doc,struts2的值栈排列顺序为:
1.临时对象;2.模型对象;
3.Action对象;4:固定名称对象(如#application, #session, #request等对象)。