struts2類型轉換器入門

說明:在頁面中輸入的都是字符串。而在Java在處理時習慣使用對象。需要將頁面的輸入的字符串轉換成java對象後然後再進行後續的處理。

 

例1:頁面上輸入的用戶信息。用戶名和密碼使用分號隔開。

 頁面內容: user info: hello;world

結果輸出爲:username: hello   passworld: world

 

a.      登錄界面userinfo.jsp

<h1>使用分號將用戶名和密碼分開</h1>

<formaction="userAction">

       user info :  <inputtype="text"name="user"/><br/>

      <inputtype="submit"value="submit"/>

</form>

b.      定義待轉換的bean類User.

classUser{

  //定義屬性名

 //定義get(),set()方法。

}

c.       配置文件struts.xml.配置action對應的類

<actionname="userAction"class="com.ebuair.UserAction">

           <resultname="success">/showuserinfo.jsp</result>  

    </action>

d.      新建com.ebuair.UserAction.(繼承ActionSupport類)

publicclass UserAction extends ActionSupport{

  private User user;  //注意這裏一定不能新建new User()對象

 //生成get(),set()方法

 //重寫execute()方法

}

   e.定義類型轉換器com.ebuair.converter.UserConverter.

(繼承DefaultTyepeConverter)

重寫convertValue(Mapcontext,Object value,Class toType)

public classUserConverter extends DefaultTypeCoverter{

 @override

  convertValue(Map context,Object value,ClasstoType){

  if(User.class == toType){//從頁面向後臺轉換}

  else if(String.class = toType){//從後臺向頁面轉換}

 }

}

e.      定義屬性文件。規則:必須在action包下。本例爲:com.ebuair

文件名爲action名-conversion.properties

(這個也是開始學習時最容易出錯的地方)

本例爲:UserAction-conversion.properties

文件內容 待轉換的類對象=類型轉換器的所在的包路徑

本例爲:user= com.ebuair.converter.UserConverter.

類型轉換器可以直接繼承DefaultTypeConverter類,重寫convertValue()方法,可以實現類型轉換。還可以直接繼承StrutsTypeConverter類,重寫convertFromString(Map arg0,String[] arg1,Class args2)和converToString(Map arg0,Object arg1)

StrutsTypeConver對DefaultTypeConverter類的convertValuea()方法進行了封裝。

   f.展示頁面:showuserinfo.jsp(使用)

<@ taglib prefix=”s” uri=”/struts-tags”>

 <s:property value=”user”/>

 

 

    例2.批量的類型轉換。

a. 登錄界面userinfos.jsp

<form action=”userActions”>

 user info1: <input type=”text” name=”user”><br>

 user info2: <input type=”text” name=”user”><br>

 ……

 <input type=”submit” value=”submit”>

</form>

b.      配置sruts.xml。配置指定的action

<actionname=”userActions” class=”com.ebuair.UserAcions”>

 <result name=”successs”>/showuserinfos.jsp</result>

                </action>

c.       實現com.ebuair.UserAcions類 (繼承ActionSupport類)

publicclass UserActions extends ActionSupport{

  List<User> user //注意不能使用new生成新的對象。

  //生成set(),get()方法

 //重寫execute()方法

}

d.      實現類轉換器com.ebuair.converter.UserActionsConverter

(繼承StrutsTypeConverter)

publicclass UserActionsConverter extends StrutsTypeConverter{

@override

public Object converFromString(Map context, String[]vaules, Class toClass){

//爲什麼不用判斷toClass==User.class

 List<User> users = newArrayList<User>();

 for(){ }

 return users;

@override

publicString convertToString(Map contex,Object o){

List<User> users = (List<User>) o;

 StringBuffer userinfo = new StringBuffer();

 for(User user : users){

 userinfo.append(“username:”).append(username).append(“password”).append(“password”);

}

return userinfo.toString();

}

}

}

e.      配置屬性文件。

在和Action類相同的包下定義文件

(本例爲在com.ebuair包下新建文件)

文件名稱爲Action類名-conversion.properties

(本例爲UserActions-conversion.propeties)

內容爲帶轉換的類名=類轉化器名()

(本例爲user=com.ebuair.converter.UserAciontsConverter)

發佈了7 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章