@ Размер аннотации не подходит для моего класса - PullRequest
3 голосов
/ 02 июля 2019

У меня есть Spring Boot Controller с конечной точкой, которая принимает следующий класс конфигурации (как json). Класс имеет параметр maxIterations и аннотацию @Size, установленную на 9000.

...
import javax.validation.constraints.Max;
import javax.validation.constraints.Size;

public class Configuration {
    // Max iterations
    @Size(max = 9000)
    private Integer maxIterations;

    ...
}

Проблема в том, что при вызове POST этой конечной точки со следующим json он не возвращает ошибку или предупреждение о том, что параметр maxIterations выше 9000.

{
  "maxIterations": 15000
}

Это мой контроллер:

@PostMapping()
@ResponseStatus(HttpStatus.CREATED)
public String doSomething(@RequestBody Configuration configuration) {
    ...
}

В чем может быть проблема?

1 Ответ

1 голос
/ 02 июля 2019

Как уже упоминалось в комментариях, вы должны использовать @Max(9000), поскольку @Size следует использовать только для массивов, строк, коллекций и карт.

public class Configuration {
    @Max(9000)
    private Integer maxIterations;

    // ...
}

Кроме того, вы должны использовать @Valid аннотация внутри вашего контроллера, чтобы валидатор бина знал, что в классе Configuration есть ограничения, например:

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public String doSomething(@Valid @RequestBody Configuration configuration) {
    // ...
}
...