在上面的例子中,我们运行时,将会看到的是页面是报错的。为了查看详细的信息,我们可以在application.properties中添加logging.level.org.springframework.web=DEBUG这一行的代码。这个时候我们运行时,看到的debug的信息如下:

对于为什么会这样,我们有必要去看一下Spring中的DateTimeFormatterRegistrar的类。在这个类中,你会看到,这里配置了解析和打印JRS310。也就是说,这里规定的日期的格式,在美国所用的格式是MM/dd/yy,而在其它地方用的是dd/MM/yy的格式。所以我们需要在Spring启动时,将自己用到的格式预置好。

1.创建日期格式

你们在项目下创建 一个包,包的名字叫date,同时日期需要转换的类叫USLocationDateFormatter.

package masterSpringMVC.date;import org.springframework.format.Formatter;import java.text.ParseException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;/*** 根据本地的国家,判断用什么样的日期* Created by OwenWilliam on 2016/5/15.*/
public class USLocalDateFormatter implements Formatter<LocalDate> {/**美国的日期格式*/public static final String US_PATTERN = "MM/dd/yyyy";/**其它国家的日期格式*/public static final String NORMAL_PATTERN = "dd/MM/yyyy";/*** 语法上的解析* @param text* @param locale* @return* @throws ParseException*/@Overridepublic LocalDate parse(String text, Locale locale) throws ParseException {return LocalDate.parse(text, DateTimeFormatter.ofPattern(getPattern(locale)));}/*** 将locale转换为String* @param object* @param locale* @return*/@Overridepublic String print(LocalDate object, Locale locale) {return DateTimeFormatter.ofPattern(getPattern(locale)).format(object);}/*** 判断本地是美国,还是其它国家* @param locale* @return*/public static String getPattern(Locale locale){return isUnitedStates(locale) ? US_PATTERN : NORMAL_PATTERN;}/*** 是否是美国* @param locale* @return*/private  static boolean isUnitedStates(Locale locale){return Locale.US.getCountry().equals(locale.getCountry());}
}

2.创建WEB的构造器

同样我们在项目下创建一个config的包,同时创建 一个WebConfiguration的类。这个类将会继承WebMvcConfigurerAdapter, Spring要构造会以我们的日期格式来构造的。

package masterSpringMvc.config;
import masterSpringMvc.dates.USLocalDateFormatter;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.
WebMvcConfigurerAdapter;
import java.time.LocalDate;
@Configuration
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override public void addFormatters(FormatterRegistry registry) {
registry.addFormatterForFieldType(LocalDate.class, new
USLocalDateFormatter());
}
}

3.调用自定义日期格式

1)        首先我们需要在ProfileController添加加下面的代码。

@ModelAttribute("dateFormat")
public String localeFormat(Locale locale) {
return USLocalDateFormatter.getPattern(locale);
}

上面代码的@ModelAttribute的注解,有点像我们之前用过的model.addAttribute(),也就是默认取值给视图层。

2)        在视图层中我们添加下面的代码。

<div class="row">
<div class="input-field col s6">
<input th:field="${profileForm.birthDate}" id="birthDate"
type="text" th:placeholder="${dateFormat}"/>
<label for="birthDate">Birth Date</label>
</div>
</div>

4.总结

这一节我们主要是学习了如何进行日期格式的转换,添加了上面的代码后,如果你是在美国地区,那么将会看到的结果是:

但是这里我们还有问题,那就是客户端输入信息时,我们需要做信息止的校验,那么这个应该实现,在下一节中,我们将会讲解。

源码路径:git@github.com:owenwilliam/masterSpringMVC.git

SpringMVC日期处理(二)相关推荐

  1. SpringMVC日期格式化

    一.关于SpringMVC日期的格式化大概可分为四点 1.@ResponseBody方式返回json的日期格式化 2.ajax方式返回json的日期格式化 3.数据保存时String转Date 4.页 ...

  2. SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

    SpringMVC入门(二)-- 参数的传递.Controller方法返回值.json数据交互.异常处理.图片上传.拦截器 参考文章: (1)SpringMVC入门(二)-- 参数的传递.Contro ...

  3. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  4. springmvc学习笔记二:重定向,拦截器,参数绑定

    springmvc学习笔记二:重定向,拦截器,参数绑定 Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加mo ...

  5. SpringMVC日期类型转换问题处理方法归纳

    前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后 台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然 ...

  6. JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器

    知识回顾 springmvc框架 用户请求url到DispatcherServlet前端控制器,相当于中央调度器,降低系统各组件之间的耦合度. DispatcherServlet前端控制器通过Hand ...

  7. springMVC学习笔记(二)-----注解和非注解入门小程序

    阅读目录 一:基础环境准备 二:非注解的处理器和映射器 三:注解的处理器映射器和适配器 四:springmvc.xml中的内容以及项目工程目录 最近一直在做一个电商的项目,周末加班,忙的都没有时间更新 ...

  8. SpringMVC系列(二): SpringMVC各个注解的使用

    1.@RequestMapping 1.@RequestMapping除了能修饰方法,还能修饰类 (1)修饰类:提供初步的请求映射信息,相对于web请求的根目录 (2)修饰方法:提供进一步的细分映射信 ...

  9. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  10. SpringMVC 日期类型转换

    全局日期类型转换配置 配置SpringMVC配置文件 <bean id="conversionService" class="org.springframework ...

最新文章

  1. 定时发送服务器运行数据并设置阀值警报方法
  2. Leetcode 98. 验证二叉搜索树 解题思路及C++实现
  3. js全局变量和局部变量
  4. 财务管理的革新带动财务软件的变革
  5. 【nodejs笔记3】Express基本用法,和路由控制,和模板渲染ejs
  6. 有关概率图模型中的D-Seperation的理解,附cousera例题解读
  7. [转载] 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis
  8. 0元包邮 | 知识图谱学习导图
  9. [Spark] - HashPartitioner RangePartitioner 区别
  10. 基于JAVA+Swing+MYSQL的汽车租赁系统
  11. 学习笔记-小甲鱼Python3学习第二十三、二十四讲:函数:这帮小兔崽子、汉诺塔...
  12. C语言写程序注意,单片机C语言编程应注意的若干问题
  13. echarts 柱状图颜色及渐变色设置
  14. Android Studio 里sync下载慢,怎么办?
  15. 最全java面试题汇总(带答案)
  16. 健康医疗数据安全指南内容
  17. 怎么申请好用的企业邮箱?外贸公司企业邮箱托管
  18. 一个90后博士眼中香港房奴梦:不吃不喝大干20年
  19. 关于OFDMA和SC-FDMA
  20. 关于实现局域网内视频播放

热门文章

  1. 点击更多显示更多内容
  2. 7.20-7.24(2)
  3. eclipse 安装插件不生效
  4. 【Linux】linux经常使用基本命令
  5. GeoServer地图开发解决方案(二):地图数据处理篇
  6. selinux --chcon命令
  7. 软件项目管理题外话篇-项目计划与结婚
  8. “OSPF” 开销值、协议优先级及计时器的修改
  9. HTTP协议基本原理简介(一)
  10. PXE+kickstart 无人值守安装CentOS 6