猿问

如何强制在 Spring Rest MVC 中需要 bean 请求参数?

我将 Spring 5 用于 REST API,但我无法获得如何标记所需的请求参数,以便 Spring 进行回复400 Bad request而不是让请求到达控制器方法。


我的方法使用 bean 来接收查询字符串参数,所以@RequestParam(required=true)这里不是一个选项:


@GetMapping(path="")

public String findAll(Filter filter) {

    // ...

}

AFilter看起来像这样:


public class Filter {


    private String id;


    private String usersId;


    private GregorianCalendar dayStart;


    private GregorianCalendar dayEnd;


    // ...


}

我想要求 ie 只是usersId强制性的。


有没有类似的东西,或者我应该手动验证输入?


千巷猫影
浏览 182回答 2
2回答

蝴蝶刀刀

你可以使用这样的东西@GetMapping(path="")public String findAll(@Valid Filter filter) {    // ...}在你的Filter课上public class Filter {    private String id;    @NotNull    private String usersId;    private GregorianCalendar dayStart;    private GregorianCalendar dayEnd;    // ...}您还应该确保验证已启用您的 bean 以应用验证规则的方式实例化

RISEBY

您可以使用用户javax.validation.Valid来验证您的 bean,而不是使用@GetMapping您可以使用@PostMapping.@PostMapping(path="")public String findAll(@Valid Filter filter) {    // ...}在你的Filter类,你可以使用@NotNull的javax.validation.constraints.NotNull和@NotEmpty的javax.validation.constraints.NotEmptypublic class Filter {    private String id;    @NotNull    @NotEmpty    private String usersId;    private GregorianCalendar dayStart;    private GregorianCalendar dayEnd;    // ...}有关验证的更多详细信息,请查看此处
随时随地看视频慕课网APP

相关分类

Java
我要回答