我在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
对象有什么方法吗?