从Sprng 3.x开始,提供了Converter和Formatter字段解析/格式化服务,主要有:
1)NumberFormatter 实现了Number与String之间的解析与格式化
2)CurrencyFormatter 实现了Number与String之间的解析与格式化(带货币符号)
3)PercentFormatter 实现了Number与String之间的解析与格式化(带百分数符号)
4)DataFormatter 实现了Data与String之间的解析与格式化
5)NumberFormatAnnotationFormatterFactory @NumberFormat注解,实现Number与String之间的解析与格式化,可以通过指定style来指示要转换的格式(Style.Number/Style.Currency/Style.Percent),当然也可以指定pattern(如pattern=“#.##”(保留2位小数) ),这样pattern指定的格式会覆盖掉Style指定的格式
6)JodaDateTimeFormatAnnotationFormatterFactory @DateTimeFormat注解,实现日期类型与String之间的解析与格式化这里的日期类型包括Date、Calendar、Long以及Joda的日期类型。必须在项目中添加Joda-Time包
1)NumberFormatter 实现了Number与String之间的解析与格式化
2)CurrencyFormatter 实现了Number与String之间的解析与格式化(带货币符号)
3)PercentFormatter 实现了Number与String之间的解析与格式化(带百分数符号)
4)DataFormatter 实现了Data与String之间的解析与格式化
5)NumberFormatAnnotationFormatterFactory @NumberFormat注解,实现Number与String之间的解析与格式化,可以通过指定style来指示要转换的格式(Style.Number/Style.Currency/Style.Percent),当然也可以指定pattern(如pattern=“#.##”(保留2位小数) ),这样pattern指定的格式会覆盖掉Style指定的格式
6)JodaDateTimeFormatAnnotationFormatterFactory @DateTimeFormat注解,实现日期类型与String之间的解析与格式化这里的日期类型包括Date、Calendar、Long以及Joda的日期类型。必须在项目中添加Joda-Time包
1.基于编程时的实现
首先,定义一个Model
public class FormatModel{
private String money;
private String date;
省略了get和set方法
}
添加一个controller
@Controller
@RequestMapping(value = "/format")
public class FormatController {
@RequestMapping(value="/test", method = {RequestMethod.GET})
public String test(Model model) throws NoSuchFieldException, SecurityException{
首先,定义一个Model
public class FormatModel{
private String money;
private String date;
省略了get和set方法
}
添加一个controller
@Controller
@RequestMapping(value = "/format")
public class FormatController {
@RequestMapping(value="/test", method = {RequestMethod.GET})
public String test(Model model) throws NoSuchFieldException, SecurityException{
if(!model.containsAttribute("contentModel")){
FormatModel formatModel=new FormatModel();
//使用CurrencyFormatter实现Number与String之间的解析与格式化,带货币符号
CurrencyFormatter currencyFormatter = new CurrencyFormatter();
currencyFormatter.setFractionDigits(2);//保留2位小数
currencyFormatter.setRoundingMode(RoundingMode.HALF_UP);//向(距离)最近的一边舍入,如果两边(的距离)是相等的则向上舍入(四舍五入)
//实现Date与String之间的解析与格式化
DateFormatter dateFormatter=new DateFormatter();
dateFormatter.setPattern("yyyy-MM-dd HH:mm:ss");
//Locale用于国际化
Locale locale=LocaleContextHolder.getLocale();
或者
/*
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
conversionService.addFormatter(currencyFormatter);
conversionService.addFormatter(dateFormatter);
*/
formatModel.setMoney(currencyFormatter.print(12345.678, locale));
formatModel.setDate(dateFormatter.print(new Date(), locale));
model.addAttribute("contentModel", formatModel);
}
return "formattest";
}
}
也可以使用DefaultFormattingConversionService来根据浏览器请求的信息返回相应的格式
在JSP页面中,用下面的语句来获取
money:<br/>${contentModel.money}<br/>
date:<br/>${contentModel.date}<br/>
2.使用注解来实现,这时将Model修改一下
public class FormatModel {
@NumberFormat(style=Style.CURRENCY)
private double money;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date date;
省略了get和set方法
}
修改Controller
@Controller
@RequestMapping(value="/format")
public class FormatController {
@RequestMapping(value="/test",method={RequestMethod.GET})
public String test(Model model) throws NoSuchFieldException,SecurityException{
if(!model.containsAttribute("contentModel"))
{
FormatModel formatModel = new FormatModel();
formatModel.setMoney(12345.678);
formatModel.setDate(new Date());
model.addAttribute("contentModel",formatModel);
}
return "formattest2";
}
}
以上就是总结的基于Spring mvc进行数据转换的
FormatModel formatModel=new FormatModel();
//使用CurrencyFormatter实现Number与String之间的解析与格式化,带货币符号
CurrencyFormatter currencyFormatter = new CurrencyFormatter();
currencyFormatter.setFractionDigits(2);//保留2位小数
currencyFormatter.setRoundingMode(RoundingMode.HALF_UP);//向(距离)最近的一边舍入,如果两边(的距离)是相等的则向上舍入(四舍五入)
//实现Date与String之间的解析与格式化
DateFormatter dateFormatter=new DateFormatter();
dateFormatter.setPattern("yyyy-MM-dd HH:mm:ss");
//Locale用于国际化
Locale locale=LocaleContextHolder.getLocale();
或者
/*
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
conversionService.addFormatter(currencyFormatter);
conversionService.addFormatter(dateFormatter);
*/
formatModel.setMoney(currencyFormatter.print(12345.678, locale));
formatModel.setDate(dateFormatter.print(new Date(), locale));
model.addAttribute("contentModel", formatModel);
}
return "formattest";
}
}
也可以使用DefaultFormattingConversionService来根据浏览器请求的信息返回相应的格式
在JSP页面中,用下面的语句来获取
money:<br/>${contentModel.money}<br/>
date:<br/>${contentModel.date}<br/>
2.使用注解来实现,这时将Model修改一下
public class FormatModel {
@NumberFormat(style=Style.CURRENCY)
private double money;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date date;
省略了get和set方法
}
修改Controller
@Controller
@RequestMapping(value="/format")
public class FormatController {
@RequestMapping(value="/test",method={RequestMethod.GET})
public String test(Model model) throws NoSuchFieldException,SecurityException{
if(!model.containsAttribute("contentModel"))
{
FormatModel formatModel = new FormatModel();
formatModel.setMoney(12345.678);
formatModel.setDate(new Date());
model.addAttribute("contentModel",formatModel);
}
return "formattest2";
}
}
以上就是总结的基于Spring mvc进行数据转换的