一、自定義轉換器
定義一個類DataConverter 該類繼承自StrutsTypeConverter,定義了兩個抽象方法,用于不同的轉換方向,分別如下:
① public Object convertFromString(Map context, String[] values, Class toType) 將一個或多個字符串值轉換成指定的類型。參數context是表示OGNL上下文的Map對象,參數values是要轉換的字符串值,參數toType是要轉換的目標類型
②public String convertToString(Map context, Object obj):將指定對象轉換為字符串,參數context是表示OGNL上下文的Map對象,參數Object是要轉換的對象
public class DataConverter extends StrutsTypeConverter{ //支持轉換的多種日期格式 private final DateFormat[]dfs= { new SimpleDateFormat("yyyy/MM/dd"), }; /* * 將指定格式字符串轉換為日期類型 */ @Override public Object convertFromString(Map context, String[] values, Class toType) { //獲取日期的字符串 String value=(String)values[0]; //遍歷日期支持格式,進行轉換 for (int i = 0; i < dfs.length; i++) { try { return dfs[i].parse(value); } catch (Exception e) { continue; } } //如果遍歷完畢后若沒有轉換成功,表明出現 轉換異常 throw new TypeConversionException(); } /* *將日期轉換為指定格式字符串 */ @Override public String convertToString(Map context, Object obj) { //輸出的格式是yyy-MM-dd return new SimpleDateFormat("yyyy/MM/dd").format(obj); }
UserInfo實體類:
struts.xml:
<constant name="struts.devMode" value="true"></constant> <package name="default" namespace="/" extends="struts-default"> <action name="adduser" class="cn.happy.action.UserAction"> <result name="success">ok.jsp</result> <result name="input">index.jsp</result> </action>
二、配置自定義類型轉換器
1、應用于特定類的類型轉換器 在特定類的相同目錄下創建一個名為ClassName-conversion.properties的屬性文件
在UserAction-conversion.properties中進行添加節點,針對于出生日期Date類型
2、應用于全局范圍的類型轉換器 在src目錄創建xwork-conversion.properties
實現效果:
三、若用戶輸入的日期與自定義類型不一致時,那么我們如何給出錯誤提示呢?那么這里即可用到了國際化,在struts.xml中進行添加一個常量
其次呢,在src下創建message.properties,并添加Name、Value
最后,在index.jsp中可使用fielderror在頁面顯示信息
實現效果如下:
文章列表