struts2自定義轉換器

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

相關文章
相關標籤/搜索