При использовании spring-boot я пытаюсь использовать java.time в своем контроллере. В частности, я пытаюсь сделать JavaScript в формате LocalDate дружественным. Дружелюбным я имею в виду вывод его в формате javascript, который может анализировать, а также заставить моего контроллера принимать опубликованные данные (или помещать ... или patch'ed) из углового (или тому подобного).Принимая и возвращаю 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>
То, что я в основном ищу способ вернуть типы java.time в JavaScript форматах, а также быть в состоянии получить их, когда я отправляю на мой контроллер.
Я видел, что @DateTimeFormat используется во многих местах, а также @JsonFormat, но я не мог заставить его работать. Также я ищу способ глобально справиться с этим.
Может ли кто-нибудь дать мне некоторую информацию о том, как это сделать?
Полный код можно найти на https://github.com/tonsV2/MyBiz
Update: Я попытался добавить следующий компонент в моем классе @SpringBootApplication.
@Bean
public ObjectMapper objectMapper() {
final ObjectMapper mapper = new ObjectMapper();
mapper.configure(WRITE_DATES_AS_TIMESTAMPS, true);
return mapper;
}
Не знаю, может ли это помочь, но есть опция, которую вы можете применить к свой ObjectMapper: 'om.configure (WRITE_DATES_AS_TIMESTAMPS, true/false);'. – assylias
@assylias - Я не мог заставить его работать. Я создал компонент и добавил его в свой класс приложений ... вот как это делается, не так ли? Я обновил свой вопрос, чтобы показать, что я сделал. – user672009