需要使用Spring java对象请求参数

时间:2018-04-30 12:05:35

标签: java spring spring-boot http-request-parameters

我有以下控制器代码

@GetMapping("/users")
public ResponseEntity<UserDto> getUsers(Filter filter) {
    return ResponseEntity.ok(userService.findUsers(filter));
}

Filter.java:

public class Filter {
    private Integer page;

    private Integer size;

    private String sort;

    ... lots of other parameters
}

请求参数被写为Java对象,以避免向控制器添加大量参数。但是,所有参数都是Spring可选的。我想要的是需要一些参数,如pagesize,但其他参数如sort可选。如果我将它们作为控制器参数,我可以使用@RequestParam(required = true/false)。是否有可能在Java类中做类似的事情?

1 个答案:

答案 0 :(得分:3)

您可以使用javax.validation API为类的字段指定一些约束 在您的情况下,您可以根据您的要求和字段类型使用var adminMode = { init: function() { this.adminButton = document.getElementById('admin-button'); //this.adminForm = document.getElementById('admin-form');// form ID //this.allForm = document.getElementById('all-form'); //div ID this.adminButton.addEventListener('click', function (event) { document.getElementById('admin-form').style.display = 'inline' }); }, @NotNull,例如:

@NotEmpty

然后为要验证的参数指定import javax.validation.constraints.NotNull; import javax.validation.constraints.NotEmpty; ... public class Filter { @NotNull private Integer page; @NotEmpty private Integer size; private String sort; ... lots of other parameters } 注释:

@Valid

如果filter参数不遵守约束,则抛出import javax.validation.Valid; ... @GetMapping("/users") public ResponseEntity<UserDto> getUsers(@Valid Filter filter) { return ResponseEntity.ok(userService.findUsers(filter)); } ,您可以使用Spring异常处理程序(例如ConstraintViolationException)将其留下或捕获以将其映射到特定客户端4XX错误。