Struts 2的類型轉換

jopen 8年前發布 | 7K 次閱讀 Struts2 Web框架

           所有的MVC 框架,都需要負責解析 HTTP 請求參數,并將請求參數傳給控制器組件。由于 HTTP 請求參數都是字符串類型,但是 java 是強類型的語言。,因此 MVC 框架必須將這些字符串參數轉換成相應的數據類型。

           Struts 2提供了非常強大的類型轉換機制。Struts 2的類型轉換可以基于ONGL表達式,只要把HTTP參數命名為合法的ONGL表達式,就可以充分利用Struts 2的類型轉換機制。

 

           1Struts 2內建的類型轉換器

           Struts 2可以完成大多數常用的類型轉換。這些常用的類型轉換時通過Struts 2內建的類型轉換器完成的。如下:

          2、基于ONGL的類型轉換

          借助于ONGLStruts 2允許以另一種簡單方式將請求參數轉換成復合類型。

public class LoginAction implements Action {

    private UserBean user;
    private String tip;

    public UserBean getUser() {
        return user;
    }

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

    public String getTip() {
        return tip;
    }

    public void setTip(String tip) {
        this.tip = tip;
    }

    //處理請求方法
    public String execute() throws Exception {
        if(getUser().getName().equals("chenssy")&&getUser().getPassword().equals("chentmt")){
            setTip("轉換成功");
            return SUCCESS;
        }
        else{
            setTip("轉換失敗");
            return ERROR;
        }
    }

}

          Struts 2 接收到HTTP請求參數后,需要將這些參數封裝成UserBean對象。但是我們無需作任何的處理,只需要在定義表單域是使用ONGL表達式來定義表單域的name屬性。

<s:form action="Login">
        <s:textfield name="user.name" label="用戶名"></s:textfield>
        <s:textfield name="user.password" label="密碼"></s:textfield>
        <s:submit value="轉換" ></s:submit>
        <s:submit value="重置" ></s:submit>
   </s:form>

     對于請求參數名是采用user.nameuser.password---這就是ONGL表達式的形式。Struts 2會相應的參數賦值給Action實例的user的相應的屬性。

     通過上面的方式,Struts 2可以將普通請求參數轉換成復合型類型對象,但是一般要注意下面幾點。

      1、因為Struts 2將通過反射來創建一個復合類的實例,因此系統必須為該復合類提供無參數的構造器。

      2、如果希望使用user.name請求參數的形式為Action實例的user屬性的name屬性賦值,則必須為user屬性對象的復合類提供setName()方法。

 

來自: http://blog.csdn.net/chenssy/article/details/7322252

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!