struts2自定義轉換器
Struts2自定義類型轉換器分為局部類型轉換器和全局類型轉換器
(1)局部類型轉換器
如果頁面傳來一個參數reg.action?birthday=2010-11-12到后臺action,然后屬性用date類型是可以接收到的,但是如果傳的是20101112這樣類型的字符串,用date類型是獲取不到,并且會出現錯誤的,struts2提供了一種類型轉換器供我們使用。
以下為局部類型轉換器的開發步驟
a.首先要寫一個類來繼承StrutsTypeConverter
b.然后覆蓋convertFromString(),convertToString()這個方法,在里面進行數據轉型
c.在action類所在的包下放置ConversionAction-conversion.properties文件,ConversionAction是類名,后面的-conversion.properties是固定的寫法,
如:ConversionAction-conversion.properties
d.Properties文件里面的內容為:屬性名稱=類型轉換器的全類名(既包名.類名)
如:date=cn.happy.conversion.DateConversion
創建ConversionAction類
public class ConversionAction extends ActionSupport { private Date date; @Override public String execute() throws Exception { return SUCCESS; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; }
編寫自定義轉換器代碼
public class DateConversion extends StrutsTypeConverter { private static final List<SimpleDateFormat> list=new ArrayList<SimpleDateFormat>(); static { list.add(new SimpleDateFormat("yyyy-MM-dd")); list.add(new SimpleDateFormat("yyyy年MM月dd日")); list.add(new SimpleDateFormat("yyyy/MM/dd")); list.add(new SimpleDateFormat("yyyy.MM.dd")); } public Object convertFromString(Map map, String[] strings, Class aClass) { //獲取日期的字符串 String date=strings[0]; for(SimpleDateFormat item:list){ try { //把String類型轉為Date Date parse = item.parse(date); return parse; } catch (ParseException e) { continue; } } //如果遍歷完畢后扔沒有轉換成功,表明出現轉換異常 throw new TypeConversionException(); } public String convertToString(Map map, Object obj) { Date date=(Date)obj; //輸出格式 return new SimpleDateFormat("yyyy-MM-dd").format(date); } }
jsp頁面代碼
<form action="conversion" method="post"> 日期<input name="date"> <input type="submit" value="提交"> </form>
struts.xml配置
<action name="conversion" class="cn.happy.action.ConversionAction" > <!--轉換失敗,進入login.jsp頁面--> <result name="input">login.jsp</result> <result name="success">sucess.jsp</result> </action>
(2)全局類型轉換器
如果業務需求所有的日期都要轉換,則可以使用全局類型轉換器,只要在src根目錄下面放置xwork-conversion.properties文件,并且properties文件中的內容為:
待轉換的類型=類型轉換器的全類名
如
java.util.Date=cn.happy.conversion.DateConversion

浙公網安備 33010602011771號