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