SpringMVC - 数据格式化(@DateTimeFormat & @NumberFormat)(一)

简介: SpringMVC - 数据格式化(@DateTimeFormat & @NumberFormat)(一)




当数据验证通过后就会被我们保存起来。保存的数据会用于以后的展示,这才是保存的价值。那么在展示的时候如何按照要求显示?(比如:小数保留一定的位数,日期按指定的格式等)。这就是本篇要说的内容—>格式化显示。

从Spring3.X开始,Spring提供了Converter SPI类型转换和Formatter SPI字段解析/格式化服务,其中Converter SPI实现对象与对象之间的相互转换,Formatter SPI实现String与对象之间的转换,Formatter SPI是对Converter SPI的封装并添加了对国际化的支持,其内部转换还是由Converter SPI完成。


下面是一个简单的请求与模型对象的转换流程:

image.png



Spring提供了FormattingConversionService和DefaultFormattingConversionService来完成对象的解析和格式化。Spring内置的几种Formatter SPI如下:


image.png



下面就开始演示,首先把Joda-Time包添加到之前的项目中,这里用的是joda-time-2.3.jar,在views文件夹下添加一个formattest.jsp视图,内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    money:<br/>${contentModel.money}<br/>
    date:<br/>${contentModel.date}<br/>
</body>
</html>

1、首先我们直接用Formatter来做演示,在com.demo.web.models包中添加FormatModel.java内容如下:

package com.demo.web.models;
public class FormatModel{
    private String money;
    private String date;
    public String getMoney(){
        return money;
    }
    public String getDate(){
        return date;
    }
    public void setMoney(String money){
        this.money=money;
    }
    public void setDate(String date){
        this.date=date;
    }
}

在com.demo.web.controllers包中添加FormatController.java内容如下:

package com.demo.web.controllers;
import java.math.RoundingMode;
import java.util.Date;
import java.util.Locale;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.format.number.CurrencyFormatter;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.demo.web.models.FormatModel;
@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 currencyFormatter = new CurrencyFormatter();  
            currencyFormatter.setFractionDigits(2);//保留2位小数
            currencyFormatter.setRoundingMode(RoundingMode.HALF_UP);//向(距离)最近的一边舍入,如果两边(的距离)是相等的则向上舍入(四舍五入)
            DateFormatter dateFormatter=new DateFormatter();
            dateFormatter.setPattern("yyyy-MM-dd HH:mm:ss");
            Locale locale=LocaleContextHolder.getLocale();
            formatModel.setMoney(currencyFormatter.print(12345.678, locale));
            formatModel.setDate(dateFormatter.print(new Date(), locale));        
            model.addAttribute("contentModel", formatModel);
        }
        return "formattest";
    }
}

运行测试:


image.png

目录
相关文章
|
前端开发 Java Spring
springMVC--数据格式化
springMVC--数据格式化
89 0
|
前端开发 安全 Java
详细解读_SpringMvc类型转换&数据格式化&数据验证
详细解读_SpringMvc类型转换&数据格式化&数据验证
|
Java Spring
SpringMVC - 数据格式化(@DateTimeFormat & @NumberFormat)(二)
SpringMVC - 数据格式化(@DateTimeFormat & @NumberFormat)(二)
161 0
|
前端开发
SpringMVC的类型转换器和数据格式化(九)下
SpringMVC的类型转换器和数据格式化(九)
291 0
SpringMVC的类型转换器和数据格式化(九)下
|
前端开发 Java
SpringMVC的类型转换器和数据格式化(九)中
SpringMVC的类型转换器和数据格式化(九)
168 0
SpringMVC的类型转换器和数据格式化(九)中
SpringMVC的类型转换器和数据格式化(九)上
SpringMVC的类型转换器和数据格式化(九)
241 0
SpringMVC的类型转换器和数据格式化(九)上
|
XML JSON 前端开发
springmvc4整合AJAX使用@ResponseBody注解返回JSON数据格式
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/53433325   ...
1272 0
|
容器 前端开发
SpringMVC 中 数据格式化
FormattingConversionServiceFactoryBean内部已经注册了: - NumberFormatAnnotationFormatterFactroy:支持对数字类型的属性使用@NumberFormat注解。 - JodaDateTimeFormatAnnotationFormatterFactroy:支持对日期类型的属性使用@DataTime
1431 0
|
前端开发 Java Spring
springMVC4(11)使用注解完成数据格式化
<div class="markdown_views"> <h1 id="需求实例引入">需求实例引入</h1> <p>在实际开发中,我们会常常遇到需要对日期格式、数值格式进行转换的需求。在spring中,我们可以轻松通过注解的方式完成对数据的格式化处理,比如现在有个User POJO类: <br> package com.mvc.model;</p> <pre cla
2765 0
|
6月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】