1. 程式人生 > >Struts2 傳遞引數的方法

Struts2 傳遞引數的方法

首先要寫一個BaseAction,繼承actionSupport,實現 ServletContextAware,ServletRequestAware, ServletResponseAware,三個介面。 第1種: 首先Action繼承一個BaseAction,類中定義一個屬性與頁面需要傳輸的引數名稱一樣,使用該屬性的set方法就可以獲     取需要傳遞的引數.同樣的使用屬性的get方法可以向頁面傳輸引數,在jsp頁面上可以使用el表示式 ${引數名稱}可以取到該引數的值 (該屬性名需要與action中需要傳遞的引數名稱一致)

@Controller public class UserAction
extends BaseAction { private static final long serialVersionUID = 6590628669106856656L;       private String username ; public String getUser() { return username;       } public void setUser(String username) { this. username = username;             System. out.println( "set方法");       } private
String result = SUCCESS; /**        *struct.xml中action預設呼叫的方法        */ public String execute() throws Exception { return result;       } }
在這個action中,有一個屬性是username,並有set/get方法,只要傳過來的引數名稱叫username,會自動給這個類中username賦值,從而取到頁面上的值;
如果是表單提交傳遞多個引數的時候,寫多個屬性及其get/set方法有點繁瑣,比如使用者註冊頁面,我們可以將需要傳遞的引數封裝成物件,比如使用者註冊的時候需要填寫使用者名稱,密碼,手機,生日等資訊,只需要建立一個user型別封裝這些表單屬性.在Action中定義user型別的變數,並實現其get/set方法.
@Controller public class UserAction extends BaseAction { private static final long serialVersionUID = 6590628669106856656L;       private User user ; public User getUser() { return user;       } public void setUser(User user) { this. user = user;             System. out.println( "set方法");       } private String result = SUCCESS; /**        *struct.xml中action預設呼叫的方法        */ public String execute() throws Exception { return result;       } } 在頁面上只需要將需要獲取的引數的標籤的名稱設定為 物件名.屬性名(類似於el表示式) 如<input name="user.username">
這是action便可以取到user的username屬性的值.


第二種;action繼承BaseAction類,定義一個HttpServletRequest屬性,並重寫 setServletRequest方法,這時候我們可以像servlet中那樣使用request從頁面獲取引數或者傳遞引數 @Controller public class UserAction extends BaseAction { private static final long serialVersionUID = 6590628669106856656L;       private User user ; public User getUser() { return user;       } public void setUser(User user) { this. user = user;             System. out.println( "set方法");       |       private HttpServletRequest request ;                //重寫setServletRequest方法 @Override public void setServletRequest( HttpServletRequest request) { this. request = request;       }
private String result = SUCCESS; /**        *struct.xml中action預設呼叫的方法        */ public String execute() throws Exception {             List<User> users = userDAO.findAll(); request.setAttribute( "users", users); return result;       } }