gpt4 book ai didi

spring - @RepositoryRestController 中的验证

转载 作者:行者123 更新时间:2023-12-01 12:54:39 25 4
gpt4 key购买 nike

我想在我的 @RepositoryRestController 中使用 javax 注释 @Valid 验证我的 DTO。然而,@RepositoryRestController 当前不支持 @Valid,您可以在这张票证中看到:https://jira.spring.io/browse/DATAREST-593

如果我使用 @RestController,我的 @Valid 可以正常工作,但是我的 @RepositoryRestResource 将不再工作。我需要在我的 @RestController 中为每个功能(findOne()、findAll() 等)手动编写一个方法。目前,我只能将 @RepositoryRestResource 与方法 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();
}

Controller :

@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;
}
}

芯片助手:

@Data
public class ChipHelper {
@NotNull
private Long id;

@NotNull
@Size(min = 10)
private String identifier;
}

最佳答案

这个答案:https://stackoverflow.com/a/44304198/5435182对我有用:

只需将此添加到您的 @RepositoryRestController 即可:

@Inject
private LocalValidatorFactoryBean validator;

@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addValidators(validator);
}

关于spring - @RepositoryRestController 中的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37923994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com