1)接收参数
1. 用属性接受参数给Action
注意Action里的属性名就尽量与要传递的属性名相同
(注意不是直接给Action中的同名属性直接赋值)
如链接: <a href="user/user!add?name=a&age=8">添加用户</a>
它用调UserAction的setName(),和setAge()方法 然后再调add()方法
相应在struts.xml中的配置:
2. 使用DomainModel接受参数给Action.
如链接: <a href="user/user!add?user.name=a&user.age=8">
这时struts2 会在struts.xml中找到相应的Action(即下面的UserAction),
然后 new UserAction().setUser().setName()
之后再调用Action的add()方法
注意一定要把DMI 打开,在struts.xml中加入
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> ,否则会出现下面信息
严重: Could not find action or result
There is no Action mapped for namespace /user and action name user!add. - [unknown location]
....
struts.xml的配置同上
//UserAction.java
public class UserAction extends ActionSupport {
private User user;
public String add() {
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
3. 用模型驱动来接受参数(ModelDriven)
public String add() {
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
public User getModel() {
return user;
}
2) 中文问题
在struts.xml中加入 <constant name="struts.i18n.encoding" value="GBK" /> 即可
struts2.1.16 这样加不行,本身的bug
另处,constant 中的常量可以在 struts.core.2.1.18.jar引入包 ->static文件夹 ->default.properties文件中查到