繁体   English   中英

如何在Spring Rest MVC中强制使用bean请求参数?

[英]How to force a bean request parameter to be required in Spring Rest MVC?

我使用的是REST API的Spring 5,但我无法获得如何标记要求的请求参数的方法因此Spring会回复400 Bad request而不是让请求到达控制器方法。

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

@GetMapping(path="")
public String findAll(Filter filter) {
    // ...
}

Filter如下所示:

public class Filter {

    private String id;

    private String usersId;

    private GregorianCalendar dayStart;

    private GregorianCalendar dayEnd;

    // ...

}

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

有没有类似的事情,还是我应该手动验证输入?

你可以用这样的东西

@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

您可以使用javax.validation.Valid来验证您的bean,而不是使用@GetMapping ,而可以使用@PostMapping

@PostMapping(path="")
public String findAll(@Valid Filter filter) {
    // ...
}

并在Filter类,你可以使用@NotNulljavax.validation.constraints.NotNull@NotEmptyjavax.validation.constraints.NotEmpty

public class Filter {

    private String id;

    @NotNull
    @NotEmpty
    private String usersId;

    private GregorianCalendar dayStart;

    private GregorianCalendar dayEnd;

    // ...
}

有关验证的更多详细信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM