struts2教程(4)--类型转换
Struts2類型轉換
1、 struts2內部提供大量類型轉換器,用來完成數據類型轉換問題
boolean 和 Boolean
char和 Character
int 和 Integer
long 和 Long
float 和 Float
double 和?Double
Date 可以接收?yyyy-MM-dd格式字符串
數組 ?可以將多個同名參數,轉換到數組中
集合 ?支持將數據保存到 List或者 Map集合
?
案例: 輸入合法年齡和生日可以自動轉換
當輸入abc 轉換為 int類型age時
Caused by: java.lang.NoSuchMethodException: cn.itcast.struts2.demo3.CustomerAction.setAge([Ljava.lang.String;
分析: 輸入20,轉換 int類型20 ?--- setAge(int)
??????輸入abc,轉換int出錯 ---- setAge(String) -----報錯方法不存在異常
自定義類型轉換器
1) 自定義類型轉換器
第一種 實現TypeConverter接口
convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, java.lang.reflect.Member member, java.lang.String propertyName, java.lang.Object value, java.lang.Class toType)第二種 繼承 DefaultTypeConverter
convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object value, java.lang.Class toType)第三種 繼承 StrutsTypeConverter
convertFromString(java.util.Map context, java.lang.String[] values, java.lang.Class toClass) --- 請求封裝convertToString(java.util.Map context, java.lang.Object o) --- 數據回顯類型轉換器 一直都是雙向轉換
頁面提交請求參數,封裝到model --- 需要轉換
model數據 需要在頁面 回顯 ?----需要轉換
2) 以 1990/10/10為例,自定義日期轉換器,完成轉換
public Object convertValue(Map<String, Object> context, Object value,Class toType) {// 根據toType判斷 是請求封裝 還是 數據回顯DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");if (toType == Date.class) {// 請求參數封裝 (value是字符串)String[] params = (String[]) value;String strVal = params[0]; // 轉換為 日期類型try {return dateFormat.parse(strVal);} catch (ParseException e) {e.printStackTrace();}} else {// 回顯(value是 Date)Date date = (Date) value;return dateFormat.format(date);}return null;}3) 注冊類型轉換器
局部注冊 :只對當前Action有效 (針對屬性)
全局注冊 :針對所有Action的日期類型有效 (針對類型 )
局部注冊 :在Action類所在包 創建 Action類名-conversion.properties ,格式 : 屬性名稱=類型轉換器的全類名
全局注冊 :在src下創建 xwork-conversion.properties,格式 : 待轉換的類型=類型轉換器的全類名
類型轉換錯誤處理
通過分析攔截器作用,得知當類型轉換出錯時,自動跳轉input視圖 ,在input視圖頁面中<s:fieldError/> 顯示錯誤信息
在Action所在包中,創建ActionName.properties,在局部資源文件中配置提示信息 :invalid.fieldvalue.屬性名=錯誤信息
總結
以上是生活随笔為你收集整理的struts2教程(4)--类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts2教程(3)--请求参数处理
- 下一篇: struts2教程(5)--请求参数校验