类型转换器
默认的类型转换器只需要在controller层用bean
@RequestMapping("/add1")
public String add1(Goods goods, Model model) {
model.addAttribute("goods", goods);
return "showGoods";
}
自定义类型转换器
写一个类
public class GoodsConverter implements Converter<String, Goods> {
@Override
public Goods convert(String s) {
String[] info = s.split(",");
Goods g = new Goods();
g.setGoodName(info[0]);
g.setGoodPrice(Double.parseDouble(info[1]));
g.setGoodNumber(Integer.parseInt(info[2]));
return g;
}
controller,使用注解@RequestParam
@RequestMapping("/add2")
public String add2(@RequestParam("goodInfo") Goods goods, Model model) {
model.addAttribute("goods", goods);
return "showGoods";
}
xml中配置
<!--注册自定义类型转化器-->
<bean id ="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters" >
<bean class="converter.GoodsConverter"/>
</property>
</bean>
<!--加入springmvc框架-->
<mvc:annotation-driven conversion-service="conversionService"/>
Formatter
Spring MVC提供几个内置的格式化转换器,具体如下:
NumberFormatter:实现Number与string之间的解析与格式化。
CurrencyFormatter:实现Number与String之间的解析与格式化(带货币符号)。PercentFormatter:实现Number与string之间的解析与格式化(带百分数符号)。DateFormatter:实现Date 与string之间的解析与格式化。
2020/06/30(内置DateEormatter转换器)2020-06-30(需要额外处理)
默认的就正常写即可,在controller层用bean
image-20220628151507198
自定义formatter,实现Formatter接口
public class MyFormatter implements Formatter<Date> {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public Date parse(String text, Locale locale) throws ParseException {
System.out.println("string->date"+dateFormat.parse(text));
System.out.println("date->string"+dateFormat.format(dateFormat.parse(text)));
return dateFormat.parse(text);
}
@Override
public String print(Date object, Locale locale) {
return null;
}
}
Controller不变
xml配置
<!--注册自定义格式化转换器-->
<bean id="formattingService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<list>
<bean class="converter.MyFormatter"/>
</list>
</property>
</bean>
<mvc:annotation-driven conversion-service="formattingService"/>