Struts2自定義類型轉換器分爲局部類型轉換器和全局類型轉換器java
(1)局部類型轉換器
若是頁面傳來一個參數reg.action?birthday=2010-11-12到後臺action,而後屬性用date類型是能夠接收到的,可是若是傳的是20101112這樣類型的字符串,用date類型是獲取不到,而且會出現錯誤的,struts2提供了一種類型轉換器供咱們使用。app
如下爲局部類型轉換器的開發步驟jsp
a.首先要寫一個類來繼承StrutsTypeConverteride
b.而後覆蓋convertFromString(),convertToString()這個方法,在裏面進行數據轉型 post
c.在action類所在的包下放置ConversionAction-conversion.properties文件,ConversionAction是類名,後面的-conversion.properties是固定的寫法,
如:ConversionAction-conversion.propertiesthis
d.Properties文件裏面的內容爲:屬性名稱=類型轉換器的全類名(既包名.類名)spa
如:date=cn.happy.conversion.DateConversioncode
建立ConversionAction類orm
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; }
編寫自定義轉換器代碼xml
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