Struts2自定義型別轉換器
阿新 • • 發佈:2018-11-28
package com.loaderman.d_type; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; /** * 自定義型別轉換器類 */ public class MyConverter extends StrutsTypeConverter {// 新需求: 要求專案中要支援的格式,如: yyyy-MM-dd/yyyyMMdd/yyyy年MM月dd日.. // 先定義專案中支援的轉換的格式 DateFormat[] df = { new SimpleDateFormat("yyyy-MM-dd"), new SimpleDateFormat("yyyyMMdd"), new SimpleDateFormat("yyyy年MM月dd日") }; /** * 把String轉換為指定的型別 【String To Date】 * *@param context * 當前上下文環境 * @param values * jsp表單提交的字串的值 * @param toClass * 要轉換為的目標型別 */ @Override public Object convertFromString(Map context, String[] values, Class toClass) { // 判斷: 內容不能為空 if (values == null|| values.length == 0) { return null; } // 判斷型別必須為Date if (Date.class != toClass) { return null; } // 迭代:轉換失敗繼續下一個格式的轉換; 轉換成功就直接返回 for (int i=0; i<df.length; i++) { try { return df[i].parse(values[0]); } catch (ParseException e) { continue; } } return null; } @Override public String convertToString(Map context, Object o) { return null; } }
Struts2中如何自定義型別轉換器?
介面 實現類
Struts2中如何配置自定義轉換器?
1、自定義轉換器繼承StrutsTypeConverter 2、重寫convertFromString和convertToString方法 3、註冊轉換器 3.1 在Action所在包中建立 Action名-conversion.properties 3.2 在3.1檔案中新增以下資料 需要轉換的欄位名=自定義轉換器類的許可權定名 birthday=cn.itcast.convertor.DateTypeConvertor
總結
以上的轉換器註冊時候是與Action的名字相耦合的,因此只能在自己的Action中內部使 用,稱之為區域性轉換器註冊方式。
Struts2中如何自定義全域性型別轉換器?
實現的介面和繼承的類都是相同的,本質上就是配置的方式不同。
實現
1、自定義轉換器繼承StrutsTypeConverter 2、重寫convertFromString和convertToString方法 3、註冊轉換器 3.1 在專案src目錄下建立以下固定檔案 xwork-conversion.properties 3.2 在3.1檔案中新增以下資料 需要轉換的類型別=轉換器類的許可權定名 如: java.util.Date= cn.itcast.converter.DateConverter
總結
該攔截器負責對錯誤資訊進行攔截器 <interceptor name="conversionError“ class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>
Struts2中區域性和全域性轉換器的註冊檔名為什麼是固定的?
1、struts-default.xml <interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/> 2、StrutsConversionErrorInterceptor原始碼 3、2的父類ConversionErrorInterceptor原始碼 4、intercept()方法中的XWorkConverter原始碼 5、 XWorkConverter