导航

Spring MVC 类型转换

Posted on 2017-10-10 19:43  耍流氓的兔兔  阅读(147)  评论(0编辑  收藏  举报

 

SpringMVC类型转换:

  1 日期类型转换:

  private Date birthday;
  <label for="">生日:<input type="text" name="birthday" /></label><br />

  针对日期类型,springmvc默认没有做类型转换,因此会报告400错误,此时需要配置日期类型转换器

    1.1  在pojo层添加注解:@DateTimeFormat()

        pattern:日期格式(前端传输的日期也必须是这个格式)

@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday;

    1.2 自定义类型转换器

public class DateConverter implements Converter<String, Date>{
    /**
     * 将字符串转换成日期格式,重写convert方法
     */
    @Override
    public Date convert(String source) {
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            sdf.setLenient(false);//是否宽松解析:默认true
            return sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}
    <!-- 配置注解驱动 -->
    <mvc:annotation-driven conversion-service="myConversion" />
<!-- 类型转换器 --> <bean id="myConversion" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.roxy.springmvc.converter.DateConverter"></bean> </set> </property> </bean>

    1.3 在controller中添加方法

    @InitBinder
    public void initBinder(ServletRequestDataBinder binder){
        binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
    }

  2 对象类型转换:

    前端传递的数据为String类型,而后台处理的是对象类型

public class UserConverter implements Converter<String, User>{
    /**
     * 将字符串转换成对象
     */
    @Override
    public User convert(String source) {
        if(source != null) {
            String[] split = source.split("|");
            if(split != null && split.length == 3) {
                String username = split[0];
                Integer age = Integer.parseInt(split[1]);
                String email = split[2];
                String birday = split[3];
                
                User user = new User();
                user.setUsername(username);
                user.setAge(age);
                user.setEmail(email);
                
                return user;
            }
        }
        return null;
    }
<bean class="com.roxy.springmvc.converter.UserConverter"></bean>