一. 日期类型
当我们从request中获取请求参数的时候,虽然SpringMVC能给我们自动完成大部分的类型转换,但是还是有一些类型需要我们手动转换,先看一下日期类型,首先编写一个Controller:
import java.util.Date; @Controller public class Test { @RequestMapping("/getDate") public String testException1(Date date, Model model) { model.addAttribute("result", date); return "test"; } }
接下来当我们访问 http://localhost:8888/sm/getDate?date=2019-07-09 11:09:00,SpringMVC却没有将请求参数中的date转换为Date类型,并引发500错误。所以我们需要手动将其转换:
@Controller public class Test { @RequestMapping("/getDate") public String testException1(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date, Model model) { model.addAttribute("result", date); return "test"; } }
二. 数值类型
接下来编写获取Double类型的Controller:
@Controller public class Test { @RequestMapping("/getNum") public String testException1( Double price, Model model) { model.addAttribute("result", price); return "test"; } }
同样,如果我们访问http://localhost:8888/sm/getNum?price=1,234,567.89,那么SpringMVC依旧无法将其转换为Double类型,所以我们需要手动将其转换:
@Controller public class Test { @RequestMapping("/getNum") public String testException1(@NumberFormat(pattern = "#,###,###.##") Double price, Model model) { model.addAttribute("result", price); return "test"; } }
其中#,###,###.##一一般设置为你的数据类型的最大长度,这样最大长度和最小长度都可以处理,比如我们访问price=34,567.89也可以正常处理
注意:类型转换需要配置<mvc:annotation-driven/>
三. 总结
1. 日期类型转换
在形参前添加@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)注解
2. 数值类型转换
在形参前添加@NumberFormat(pattern = “#,###,###.##”)注解
请登录之后再进行评论