在执行JSR-303验证之前从@RequestBody修改实例?

时间:2017-02-03 08:48:04

标签: java spring bean-validation

我在Spring Boot应用程序中使用JSR-303验证。应用程序充当REST API。

这是我使用@Validated注释与验证组的示例:

 @PostMapping("/")
    public ResponseEntity<APIResponse> add(@RequestBody @Validated(Schedule.Insert.class) Schedule schedule) {

        Assert.notNull(schedule);

        schedule.setUser(getCurrentUser());

        try {

            Schedule newSchedule = scheduleService.save(schedule);

            APIResponse response = new APIResponse(HttpStatus.CREATED);
            response.data("schedule", newSchedule);

            return APIResponse.export(response);

        } catch (Exception e) {

            throw new RequestProcessingAPIException("", e);

        }
}

我正在寻找一种方法如何注射&#34;在执行验证过程之前,请求主体中的特定用户对象(schedule.setUser(getCurrentUser());)进入Schedule实例。

为什么呢?因为我在Schedule bean中有这个字段,所以不能为空。

@NotNull
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

在这种情况下,验证会产生错误,因为User对象尚未知晓。

在执行验证之前,如何将User实例注入@RequestBody对象有什么方法吗?

0 个答案:

没有答案