首页 > 开发 > Java > 正文

SpringMVC对日期类型的转换示例

2024-07-13 10:04:02
字体:
来源:转载
供稿:网友

在做web开发的时候,页面传入的都是String类型,SpringMVC可以对一些基本的类型进行转换,但是对于日期类的转换可能就需要我们配置。

1、如果查询类使我们自己写,那么在属性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可将String转换为Date类型,如下

@DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; 

2、如果我们只负责web层的开发,就需要在controller中加入数据绑定:

@InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); //true:允许输入空值,false:不能为空值

3、可以在系统中加入一个全局类型转换器

实现转换器

public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) {  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  dateFormat.setLenient(false);  try {   return dateFormat.parse(source);  } catch (ParseException e) {   e.printStackTrace();  }    return null; }

进行配置:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">   <property name="converters">    <list>     <bean class="com.doje.XXX.web.DateConverter" />    </list>   </property> </bean> 
<mvc:annotation-driven conversion-service="conversionService" /> 

4、如果将日期类型转换为String在页面上显示,需要配合一些前端的技巧进行处理。

5、SpringMVC使用@ResponseBody返回json时,日期格式默认显示为时间戳。

@Component("customObjectMapper") public class CustomObjectMapper extends ObjectMapper {   public CustomObjectMapper() {   CustomSerializerFactory factory = new CustomSerializerFactory();   factory.addGenericMapping(Date.class, new JsonSerializer<Date>() {    @Override    public void serialize(Date value, JsonGenerator jsonGenerator,      SerializerProvider provider) throws IOException, JsonProcessingException {     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");     jsonGenerator.writeString(sdf.format(value));    }   });   this.setSerializerFactory(factory);  } }

配置如下:

<mvc:annotation-driven>  <mvc:message-converters>   <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">    <property name="objectMapper" ref="customObjectMapper"></property>   </bean>  </mvc:message-converters> </mvc:annotation-driven> 

6、date类型转换为json字符串时,返回的是long time值,如果需要返回指定的日期的类型的get方法上写上@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") ,即可将json返回的对象为指定的类型。

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") public Date getCreateTime() { return this.createTime; } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表