Struts2接受參數的幾種類型
大概有這幾種類型:
1.使用Action的屬性接受參數
在Action中加入成員變量,配置Getter和Setter方法,Getter而和Setter方法的名字和表單中input標簽的name屬性一致(簡單來說就是Action中變量的名和表單中input的name值一致)
2.使用DomainModel接收參數
JSP:
<form action="LoginAction.action" method="post">
User : <input type="text" name="user.username"><br> Password :<input
type="password" name="user.password"> <br>
<input type="submit"
value="submit">
</form>
User類:
public class User {
private String username;
private String password;
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;
}
}
Action類:
public class LoginAction extends ActionSupport implements ModelDriven<User> {
private User user ;
public String login(){
System.out.println("username = " + user.getUsername());
System.out.println("password = " + user.getPassword());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
3.使用ModelDriven接收參數(推薦使用)
和Domain主要不同:
1.User對象需要實例化
2.不需要給User對象配置getter和setter方法
3.需要實現ModelDriven接口
4.JSP中input的name屬性不需要加對象.(user.)
JSP:
<form action="LoginAction.action" method="post">
User : <input type="text" name="username"><br> Password :<input
type="password" name="password"> <br>
<input type="submit"
value="submit">
</form>
USER類和上一樣。。
Action:
public class LoginAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
public String login(){
System.out.println("username = " + user.getUsername());
System.out.println("password = " + user.getPassword());
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}
(當然獲取request后再取參數也是可以的)
接受復雜類型參數(list<String>和list<Object>)
1、參數是簡單的List<String>
JSP:
<form action="LoginAction.action" method="post">
User : <input type="text" name="username"><br> Password :<input
type="password" name="password"> <br>
book1: <input type="text" name="bookList[0]"><br>
book2: <input type="text" name="bookList[1]"><br>
book3: <input type="text" name="bookList[2]"><br>
<input type="submit"
value="submit">
</form>
User類:
public class User {
private String username;
private String password;
private List<String > bookList;
public List<String > getBookList() {
return bookList;
}
public void setBookList(List<String > bookList) {
this.bookList = bookList;
}
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;
}
}
Action類:
public class LoginAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
public String login(){
System.out.println("username = " + user.getUsername());
System.out.println("password = " + user.getPassword());
for (String book : user.getBookList()) {
System.out.println("book= " + book);
}
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}
2.接受復雜類型參數(list<Object>)
JSP:
<form action="LoginAction.action" method="post">
User : <input type="text" name="username"><br> Password :<input
type="password" name="password"> <br>
book1: <input type="text" name="userList[0].username"><br>
book2: <input type="text" name="userList[1].username"><br>
book3: <input type="text" name="userList[2].username"><br>
<input type="submit"
value="submit">
</form>
USER類:
public class User {
private String username;
private String password;
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
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;
}
}
Action類:
public class LoginAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
public String login(){
System.out.println("username = " + user.getUsername());
System.out.println("password = " + user.getPassword());
for (User u : user.getUserList()) {
System.out.println("User = " + u.getUsername());
}
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}