Spring MVC数据转换的总结

    从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.基于编程时的实现
首先,定义一个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进行数据转换的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值