Struts2 的三種接受參數的方式

1、通過普通參數的getter and setter方式接受參數。

比如前端頁面有:<s:textfield name="title" cssClass="border3"  />

在接受參數的Action中就可以聲明一個參數private  String title;比且生成它的get and set方法來獲取頁面傳遞進來的值。

2.直接接受對象的屬性值。或者是對象的部分屬性值。

@1 在頁面就可以這樣的寫<s:textfield name ="user.name" />

Action那端就直接可以使用:private User user。生成User user 的get and set 方法

直接可以使用user.name 拿到頁面傳遞進來的值。

@2 如果頁面還要傳遞不是User對象的屬性值,但是Action中又不想寫很多的private XXXXX  xxxx;的生命

我們可以通過DTO的形式傳遞頁面的值或者也稱作是VO的數據傳遞對象(英文翻譯應該是Data Transfer Object 吧)。

例如:

class User {

String name;

String password;

}

頁面時一個註冊頁面,要驗證兩次輸入的密碼是不是一直。還要傳遞一個validatePassword;

並且你還想用標準的user.name;user.password是無法傳遞參數的。我們可以寫這樣一個modle只做數據的傳遞。稱其爲:

DTO,取名爲UserDTO。

class UserDTO {

String name;

String password;

String validatePassword;

}

在Action中就可以這樣的寫:

private UserDTO userDTO;生成其get and set 方法。

通過userDTO.name;userDTO.password;userDTO.validatePassword來接收參數。

3.使用領域驅動模式接受對象的值

在頁面傳遞參數的時候依然是使用對象“.”導航形式的發送參數,但是在Action這一端需要如下的實現

class UserAction extends ActionSupport implements ModelDriven<User>{

private User user = new User();

通過user.getName();user.getPassword();來接受參數。

}

 注意:User是自己new 出來的。ModelDriven是通過getModel() setName()、setPassword();這個方法來接受Model參數的。可以參見Struts2

 的源碼。

第三種用法:
前端樣式:<s:textfield name ="user.name" />
Action 接受參數的時候必須實現ModelDriven<User>這樣一個接口,
再實例化一個private User user = new User();
不用生成user 的getter & setter 方法,就直接可以使用 user.getName();可以獲得頁面面傳遞進來的user.name這個textfield中的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章