Spring字符串转日期

Spring字符串转日期

Spring中我们的Bean有些属性是Date 但是通过容器注入属性的时候我们通过xml配置的属性,Spring容器无法将字符串转为Data给Bean属性注入。

 

JavaBean

public class Students {
    private int sid;
    private String username;
    private String gender;
    private Date birthday;

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Students{" +
                "sid=" + sid +
                ", username='" + username + '\'' +
                ", gender='" + gender + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

我们理所应当的向平常一样在xml中配置bean


    
    
    
    

会发现有报错java.lang.String不能转换为java.util.Date

解决办法:

方法一:

配置一个字符串转日期的bean




    

student这个bean中更改birthday 的配置


    
    
    
    
        
            
        
    

再次测试通过。

方法二:

自定义一个String转Date的转换类

public class MyDateConvert extends PropertyEditorSupport {

    /**

     * 字符串格式

     * yyyy-MM-dd yyyy/MM/dd

     * 或是其他 应由外部传入

     */

    private String format;



    public MyDateConvert(String format) {

        this.format = format;

    }

    public String getFormat() {

        return format;

    }



    public void setFormat(String format) {

        this.format = format;

    }



    @Override

    public void setAsText(String text) throws IllegalArgumentException {

        SimpleDateFormat sdf = new SimpleDateFormat(this.format);

        try {

            this.setValue(sdf.parse(text));

        } catch (ParseException e) {

            e.printStackTrace();

        }

    }

}

自定义一个注册器

public class MyCustomDateEditorRegistrar implements PropertyEditorRegistrar {



    private String format;



    public String getFormat() {

        return format;

    }



    public void setFormat(String format) {

        this.format = format;

    }



    @Override

    public void registerCustomEditors(PropertyEditorRegistry registry) {

        registry.registerCustomEditor(java.util.Date.class, new MyDateConvert(format));

    }



}

在xml中注入我们自定义的注册器


    
        
            
                
            
        
    

这一样我们就可以像普通属性一样配置bean


    
    
    
    

测试转换成功 通过。

你可能感兴趣的:(框架)