接受并返回java.时间在我的控制器里
Accepting and returning java.time in my controller
在使用spring-boot时,我试图使用java。时间在我的控制器里。更具体地说,我试图使LocalDate javascript友好。通过友好,我的意思是输出它的格式javascript可以解析,也使我的控制器接受数据张贴(或放…从角(或类似的)。
我的实体如下所示:
@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的方法。时间类型在javascript友好的格式,也能够接收他们,当我张贴到我的控制器。
我已经看到@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;
}
我想这应该能解决问题
@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, LocalTime, LocalDateTime,和OffsetTime,不能可移植地转换为时间戳,并表示为
WRITE_DATES_AS_TIMESTAMPS是启用的。
相关文章:
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 为什么我的控制器没有启动函数.js脚本
- JQuery$.ajax()发布数据以调用我的控制器中的方法
- AngularJS:这个注入我的控制器有什么问题
- 无权访问我的控制器 Angular 中的属性.js 1.3
- Angularjs:如何捕获
标签中的文本并在我的控制器中使用它 - 需要从视图中获取一个变量值到我的控制器中
- NodeJS和Express - 将我的控制器和模型分开
- 试图让我的决心注入到我的控制器中,以便能够注入到 HTML 中
- 构建现实世界的AngularJS应用程序,我应该如何在html中声明我的控制器.我需要在索引中声明所有.html吗?
- 如何分离代码:我的控制器是否做了太多工作
- 我的控制器不工作
- AngularJS:如何判断我的控制器是否绑定到我的ng-repeat指令元素?我的数据没有显示
- 如何将项目id传递给我的控制器以进行删除方法
- 如何在我的控制器中调用一个函数,该函数也被用作视图的范围
- Angular无法识别我的控制器
- 我希望我的控制器在做其他事情之前等待我的指令完成
- 不能从我的控制器中设置select value, Angular JS
- 为什么我的GSP拉在我的AngularJS javascript文件,但不执行我的控制器函数