Struts2自定義類型轉換器
Struts2自定義類型轉換器分為局部類型轉換器和全局類型轉換器
(1)局部類型轉換器
如果頁面傳來一個參數reg.action?birthday=2010-11-12到后臺action,然后屬性用date類型是可以接收到的,但是如果傳的是20101112這樣類型的字符串,用date類型是獲取不到,并且會出現錯誤的,struts2提供了一種類型轉換器供我們使用。
以下為局部類型轉換器的開發步驟
a.首先要寫一個類來繼承DefaultTypeConverter
b.然后覆蓋convertValue這個方法,在里面進行數據轉型
c.在action類所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是類名,后面的-conversion.properties是固定的寫法,
如:HelloWorldAction-conversion.properties
d.Properties文件里面的內容為:屬性名稱=類型轉換器的全類名(既包名.類名)
如:birthday=com.ljq.type.converter.DateTypeConverter
(2)全局類型轉換器
如果業務需求所有的日期都要轉換,則可以使用全局類型轉換器,只要在src根目錄下面放置xwork-conversion.properties文件,并且properties文件中的內容為:
待轉換的類型=類型轉換器的全類名
如:java.util.Date =com.type.Converter.DateTypeConverter 即可
DefaultTypeConverter
日期轉換器
public class DateTypeConverter extendsDefaultTypeConverter {public Object convertValue(Map<String, Object> context, Object value,Class toType) { SimpleDateFormat sdf = newSimpleDateFormat("yyyyMMdd HH:mm:ss"); try { if (toType == Date.class) {// 當字符串向Date類型轉換時 //頁面傳遞過來的參數被封裝成了String[] String[] params =(String[]) value; returnsdf.parseObject(params[0]); } else if (toType ==String.class) { // 當Date轉換成字符串時 Datedate=(Date)value; returnsdf.format(date); } } catch (java.text.ParseExceptione) { e.printStackTrace(); } return null; } } </pre><br />
對象轉換器
import ognl.DefaultTypeConverter;
public class UserConverter extends DefaultTypeConverter {@Override public Object convertValue(Map context,Object value, Class toType) { //從頁面轉到服務器 toType表示要轉化的類型, if (toType==User.class) { /*頁面傳遞過來的參數被封裝成了String[]*/ String[] params = (String[])value; User user = new User(); /*取出user字符串,按,分割成數組*/ String[] uservalues =params[0].split(","); user.setName(uservalues[0]); user.setPass(uservalues[1]); return user; } /*從服務器轉到頁面,顯示user參數值,則要轉換成字符串*/ else if (toType==String.class) { User user =(User)value; return "姓名:"+user.getName()+", 密碼:"+user.getPass(); } return null; } } </pre><br />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!