Struts2 學習之三 (struts數據驗證)

  1. Struts2 的類型轉換,對於 8 個原生數據類型以及 Date,String 等
    常見類型,Struts2 可以使用內建的類型轉換器實現自動的轉換;
    但對於自定義的對象類型來說,就需要我們自己指定類型轉換的
    方式了。

  2. 對於自定義的類型轉換器來說需要提供 3個信息:Action的名字、
    Action 中待轉換的屬性名以及該屬性對應的類型轉換器。其中
    Action的名字是通過屬性文件名來獲得的、 Action中待轉換的屬性
    名是通過屬性文件中的 key來獲得的,該屬性對應的類型轉換器是
    通過該key所對應的 value來獲得的。

關鍵代碼

jsp

“`

使用分號隔開用戶名與密碼信息

<form action="userAction">
<input type="text"  name="user"><br/>
<input type="submit">
</form>
</div>

useraction
“`public class UserAction extends ActionSupport {

private User user;

private List<User> users;
public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}


public List<User> getUsers() {
    return users;
}

public void setUsers(List<User> users) {
    this.users = users;
}

@Override
public String execute() throws Exception {
    System.out.println("name"+user.getName());
    System.out.println("password"+user.getPassword());
    return SUCCESS;
}

public String userlist() throws Exception {
    return SUCCESS;
}

}

類型轉換器

public class UserTypeCoverter extends DefaultTypeConverter{

@Override
public Object convertValue(Map context, Object value, Class toType) {
    if(User.class==toType){  //從頁面想後臺轉換
        String[] values = (String[])value;
        String firstvalue = values[0];
        StringTokenizer st =new StringTokenizer(firstvalue, ";");
        String name = st.nextToken();
        String password = st.nextToken();
        return new User(name,password);
    }else if(String.class.equals(toType)){//從後臺想前臺轉換
        User u = (User)value;
        return u.toString();

    }
    return super.convertValue(context, value, toType);
}

}

配置文件名稱(UserAction-conversion.properties)這個非常重要actionname+-conversion.properties

user=com.wfg.UserTypeCoverter

user=com.wfg.UserTypeCoverter2
users=com.wfg.UsersTypeCoverter

———-思考一刻
如果是多個user 應該如何?自行思考

  1. 可以使用 Struts2 框架自帶的類型轉換器 StrutsTypeConverter 簡化
    類 型 轉 換 代 碼 的 編 寫 , StrutsTypeConverter 繼 承 於
    DefaultTypeConverter 父 類 , 並 且 提 供 了 兩 個 抽 象 方 法 :
    convertFromString與convertToString,分別表示從頁面的字符串轉
    換爲後臺對象以及從後臺對象轉換爲頁面的字符串,我們只需實
    現這兩個抽象方法即可實現類型轉換。

public class UserTypeCoverter2 extends StrutsTypeConverter {

@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
    String[] values = (String[])arg1;
    String firstvalue = values[0];
    StringTokenizer st =new StringTokenizer(firstvalue, ";");
    String name = st.nextToken();
    String password = st.nextToken();
    return new User(name,password);
}

@Override
public String convertToString(Map arg0, Object arg1) {
    User u = (User)arg1;
    return u.toString();
}

}

  1. 全局類型轉換。在src目錄下新建xwork-conversion.properties,該
    文件的內容是待轉換的類=轉換器的名字,即
    com.wfg.User=com.wfg.UserConverer2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章