springMVC-绑定参数之日期类型转换

绑定参数之日期类型转换

1.方式一

@Controller
@RequestMapping("/date")
public class HandleDateController {
    // 从前台--->后台传递参数: String ---> java.util.Date  // http://localhost:8080/date/test1?d=2010-11-1
    @RequestMapping("/test1")
    public ModelAndView test1(@DateTimeFormat(pattern = "yyyy-MM-dd") Date d){
        System.out.println(d);
        return null;
    }
}

2.方式二

@Data
public class User {
    private Long id;
    private String username;
    private Integer age;

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

@Controller
@RequestMapping("/date")
public class HandleDateController {
    // http://localhost:8080/date/test1?id=2&username=zy&age=23&hiredate=2020-2-1
    @RequestMapping("/test2")
    public ModelAndView test2(User user){
        System.out.println(user);
        return null;
    }
}

3.方式三

@ControllerAdvice注解

@Data
public class User {
    private Long id;
    private String username;
    private Integer age;
    private Date hiredate;
}

@ControllerAdvice
public class DateFormatAdvice {
	// 如果不想每次都在Date类型上@DateTimeFormat
	@InitBinder
	public void initBinderDateType(WebDataBinder binder) {
		SimpleDateFormat sdf = new SimpleDateFormat();
		sdf.applyPattern("yyyy-MM-dd");
		binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(sdf, true));
	}
}

在这里插入图片描述

// 处理JSON
@Controller
@RequestMapping("/json")
public class HandleJsonController {
    @RequestMapping("/test3")
    @ResponseBody
    public User test3(){
        User user = new User();
        user.setUsername("will");
        user.setAge(82);
        user.setHiredate(new Date());
        return user;
    }
}

在这里插入图片描述

4.方式四

类型转换器Converter,全局类型转换。

/**
 * 自定义类型转换器
 */
public class StringToDateConverter implements Converter<String,Date> {
    /**
     * 日期类型转换方法
     * @param source
     * @return
     */
    @Override
    public Date convert(String source) {
        if(source==null){
            throw new RuntimeException("日期参数不能为空!");
        }
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd hh:mm");
        try {
            return sdf.parse(source);
        } catch (ParseException e) {
            throw new ClassCastException("日期类型转换异常");
        }
    }
}

还要在配置文件中加上如下配置:

<!--自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="com.ginger.wlfl.converter.StringToDateConverter"></bean>
        </set>
    </property>
</bean>

<!--引用自定义类型转换器-->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值