Action接收参数有三种方法(以登陆界面为例)
一、使用Action的属性接收
(1)jsp页面(需要传入的参数)
<form action="LoginAction.action" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="password"/>
<input type="submit" value="提交"/>
</form>
(2)在LoginAction中接收参数
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String username; //用户名,与接收参数命名一致
private String password; //密码,与接收参数password命名一致
public String login(){
System.out.println(username); //测试数据
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
二、DomainModel接收参数
(1)创建javaBean(User对象)
public class User {
private String username;
private String password;
public User(){
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
(2)jsp页面的修改
<form action="LoginAction.action" method="post">
用户名:<input type="text" name="user.username"/> <!-- 修改为user.username-->
密码:<input type="password" name="user.password"/> <!-- 同理 -->
<input type="submit" value="提交"/>
</form>
(3)修改LoginAction
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private User user; //创建User对象
public String login(){
System.out.println(user.getUsername()); //测试
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
三、使用ModelDriven接收参数
(1)loginActoin需要实现ModelDriven接口
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction extends ActionSupport implements ModelDriven{
private User user =new User(); //需要实例化
public String login(){
System.out.println(user.getUsername());
return SUCCESS;
}
@Override
public Object getModel() {
return user; //需要返回该对象
}
}
(2)name属性中,不用在添加“user.”前缀了(避免了重复)
<form action="LoginAction.action" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="password"/>
<input type="submit" value="提交"/>
</form>
四、当接收的参数为一个集合时
(1)User对象的修改
import java.util.List;
public class User {
private String username;
private String password;
private List<String> hobby; //添加“爱好”属性集合
public List<String> getHobit() {
return hobby;
}
public void setHobit(List<String> hobby) {
this.hobby = hobby;
}
public User(){
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
(2)修改jsp页面
<form action="LoginAction.action" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="password"/>
爱好1 :<input type="text" name="hobby[0]"/> <!-- 类似数组的保存值 -->
爱好2:<input type="text" name="hobby[1]"/>
<input type="submit" value="提交"/>
</form>