struts2自定義日期類型轉換器


 

在java web表單中提交的數據難免會有日期類型,struts2支持的日期類型是yyyy-MM-dd,如果是其他格式,就需要自己進行轉換。比如yy-MM-dd

要完成自己定義的轉換需要完成。

主要的類是:StrutsTypeConverter,該類是抽象類,需要實現兩個方法

1)public Object convertFromString(Map context, String[] values, Class toClass) 

2)public String convertToString(Map context, Object o)

其中第二個轉換成字符串的不常用。

 

步驟:

1 定義轉換器類

2 進行配置,局部或全局

 

1、定義轉換器類

定義一個 DateConverter 類繼承自 StrutsTypeConverter,實現兩個虛方法

@Override
    public Object convertFromString(Map context, String[] values, Class toClass) {
        SimpleDateFormat[] sdfs = { new SimpleDateFormat("yyyyMMdd"),
                                    new SimpleDateFormat("yyyy/MM/dd"),
                                    new SimpleDateFormat("yyyy,MM,dd")};
        //轉換類型不是日期類型
        if(toClass != Date.class){
            return null;
        }
        //轉換值是空或者長度為0
        if(values == null || values.length==0){
            return null;
        }
        String strDate = values[0];
        Date birthday = null;
        for(int i=0;i<sdfs.length; i++){
            
            try {
                birthday = sdfs[i].parse(strDate);
                return birthday;
            } catch (ParseException e) {
                continue;
            }
            
        }
        return birthday;
    }

    @Override
    public String convertToString(Map context, Object o) {
        // TODO Auto-generated method stub
        return null;
    }

 

2 配置,分兩種。一種是局部配置,另一種是全局配置

2.1)應用於特定Action類的類型轉換器 在特定Action類的同一目錄下創建一個名為ActionClassName-conversion.properties的屬性文件

例如:我的Action類是public class AdminAction extends ActionSupport,對該類轉換的屬性文件名是:AdminAction-conversion.properties

 

配置格式:屬性.屬性 = 轉換器類全名

例如:

Admin類

public class Admin {
    private String aname;
    private String apasswd;
    private Date abirthday;
    
    public Admin() {
        // TODO Auto-generated constructor stub
    }

    public String getAname() {
        return aname;
    }
。。。。。

AdminAction類

public class AdminAction extends ActionSupport {
    private Admin admin;
    
    public Admin getAdmin() {
        return admin;
    }

    public void setAdmin(Admin admin) {
        this.admin = admin;
    }

    public String login(){
。。。

表單頁面

 

配置內容:admin.abirthday=com.baidu.converter.DateConverter

 

2.2) 全局配置:在src目錄下創建xwork-conversion.properties

配置格式:類型全名=轉換器類全名

上面例子就是:java.util.Date=com.baidu.converter.DateConverter

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM