【发布时间】:2016-06-20 13:35:38
【问题描述】:
我想使用 javax 注释 @Valid 在我的 @RepositoryRestController 中验证我的 DTO。
但是@RepositoryRestController 目前不支持@Valid,正如您在这张票中看到的那样:https://jira.spring.io/browse/DATAREST-593
如果我使用@RestController 我的@Valid 可以正常工作,但是我的@RepositoryRestResource 将不再工作。我需要在@RestController 中为每个功能(findOne()、findAll() 等)手动编写一个方法。目前,我可以将 @RepositoryRestResource 与 Projection 一起用于 findAll() 等方法。
如何验证 @RepositoryRestController 中的 DTO?
存储库:
@RepositoryRestResource(excerptProjection = ChipProjection.class)
public interface ChipRepository extends JpaRepository<Chip, Long> {
}
投影:
@Projection(name = "summary", types = Chip.class)
public interface ChipProjection {
Long getId();
ChipIdentifier getChipIdentifier();
}
控制器:
@RepositoryRestController
public class ChipRestController {
@Autowired
ChipService chipService;
@RequestMapping(value = "/chips", method = RequestMethod.POST)
public @ResponseBody ChipHelper saveChip(@Valid @RequestBody ChipHelper chip, BindingResult result){
List<FieldError> errors = result.getFieldErrors();
//errors is always empty, @Valid not working
chipService.save(chip);
return chip;
}
}
ChipHelper:
@Data
public class ChipHelper {
@NotNull
private Long id;
@NotNull
@Size(min = 10)
private String identifier;
}
【问题讨论】:
-
有效注释是否成功?
标签: spring validation spring-data spring-restcontroller spring-rest