SpringMVC對日期類型的轉換


SpringMVC對日期類型的轉換

 

  在做web開發的時候,頁面傳入的都是String類型,SpringMVC可以對一些基本的類型進行轉換,但是對於日期類的轉換可能就需要我們配置。

  1、如果查詢類使我們自己寫,那么在屬性前面加上@DateTimeFormat(pattern = "yyyy-MM-dd")  ,即可將String轉換為Date類型,如下

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

  2、如果我們只負責web層的開發,就需要在controller中加入數據綁定:

復制代碼
1 @InitBinder  
2 public void initBinder(WebDataBinder binder) {  
3 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
4 dateFormat.setLenient(false);  
5 binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));   //true:允許輸入空值,false:不能為空值 
復制代碼

  3、可以在系統中加入一個全局類型轉換器

  實現轉換器

復制代碼
 1 public class DateConverter implements Converter<String, Date> {    
 2 @Override    
 3 public Date convert(String source) {    
 4     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    
 5     dateFormat.setLenient(false);    
 6     try {    
 7         return dateFormat.parse(source);    
 8     } catch (ParseException e) {    
 9         e.printStackTrace();    
10     }           
11     return null;    
12 }    
復制代碼

  進行配置:

復制代碼
<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時,日期格式默認顯示為時間戳。

復制代碼
 1 @Component("customObjectMapper")  
 2 public class CustomObjectMapper extends ObjectMapper {  
 3   
 4     public CustomObjectMapper() {  
 5         CustomSerializerFactory factory = new CustomSerializerFactory();  
 6         factory.addGenericMapping(Date.class, new JsonSerializer<Date>() {  
 7             @Override  
 8             public void serialize(Date value, JsonGenerator jsonGenerator,  
 9                     SerializerProvider provider) throws IOException, JsonProcessingException {  
10                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
11                 jsonGenerator.writeString(sdf.format(value));  
12             }  
13         });  
14         this.setSerializerFactory(factory);  
15     }  
16 }  
復制代碼

  配置如下:

復制代碼
<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;  
} 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM