2015-10-04 45 views
2

返回java.time。更具體地說,我試圖讓LocalDate javascript友好。通過友好的我的意思是輸出它的格式JavaScript可以解析,也使我的控制器接受從角度(或類似的)張貼(或放置或修補)的數據。接受,同時使用彈簧引導我想在我的控制器使用java.time在我的控制器

我的實體如下所示:

@Entity 
public class Expense { 
    @Id 
    @GeneratedValue 
    private long id; 
    ... 
    private LocalDate date; 

    public Expense() { 
    } 

    public LocalDate getDate() { 
     return date; 
    } 

    public void setDate(final LocalDate date) { 
     this.date = date; 
    } 
    ... 
} 

我的控制器看起來如下:

@RestController 
@RequestMapping("/api") 
public class ExpenseController { 
    @Autowired 
    private ExpenseService service; 

    @RequestMapping("/expense") 
    public Iterable<Expense> findAll() { 
     return service.findAll(); 
    } 

    @RequestMapping(value = "/expense", method = RequestMethod.POST) 
    public Expense save(@RequestBody Expense expense) { 
     return service.save(expense); 
    } 
    ... 
} 

我已經添加了下面到我的POM文件。導致LocalDate返回爲[yyyy,mm,dd]的列表,但javascript不喜歡。它仍然不接受瀏覽器發佈的格式。

<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
    <version>2.5.2</version> 
</dependency> 

什麼基本上,我尋找的是返回的JavaScript友好的格式java.time類型,也能接收他們時,我張貼到我的控制器的方式。

我見過的@DateTimeFormat在很多地方,以及@JsonFormat使用,但我無法得到它的大概工作。此外,我正在尋找一種方法來全球處理此問題。

誰能給我如何做一些這方面的信息?

完整的代碼可以在https://github.com/tonsV2/MyBiz

更新中找到: 我嘗試添加以下bean來我@SpringBootApplication類。

@Bean 
public ObjectMapper objectMapper() { 
    final ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(WRITE_DATES_AS_TIMESTAMPS, true); 
    return mapper; 
} 
+0

不知道這是否有幫助,但有一個選項可以應用到你的ObjectMapper中:'om.configure(WRITE_DATES_AS_TIMESTAMPS,true/false);'。 – assylias

+0

@assylias - 我無法讓它工作。我創建了一個bean並將其添加到我的Application類中,這就是它的完成方式,對吧?我已更新我的問題以顯示我所做的。 – user672009

回答

0

我想這應該可以解決問題

@Bean 
public Module getLocalDateModule() { 
    SimpleModule sm = new SimpleModule("LocalDateModule"); 
    sm.addSerializer(LocalDate.class, new JsonSerializer<LocalDate>() { 
     @Override 
     public void serialize(LocalDate localDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
      jsonGenerator.writeString(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'00:00:00.000'Z'"))); 
     } 
    }); 
    return sm; 
} 

的JSR310的事情可能不工作,因爲 https://github.com/FasterXML/jackson-datatype-jsr310

LOCALDATE的,本地時間,LocalDateTime和OffsetTime,哪些不能 可移植性被轉換爲時間戳,並且在WRITE_DATES_AS_TIMESTAMPS爲ena時代替爲 數組放血。

相關問題