Почему весенняя проверка загрузки не работает на контроллерах (@Size - аннотация)? - PullRequest
1 голос
/ 01 мая 2020

Существует приложение для весенней загрузки с java11. Итак, у меня есть контроллер

import javax.validation.Valid;
import java.time.ZonedDateTime;
import java.util.List;

@RequiredArgsConstructor
@Controller
@RequestMapping(value = "/user",
        consumes = MediaType.APPLICATION_JSON_VALUE,
        produces = MediaType.APPLICATION_JSON_VALUE)
public class UserController extends AbstractJsonController {
    private final UserService service;

    @PostMapping
    public ResponseEntity add(@Valid @RequestBody Users dto) throws Exception {
        Users result = service.add(dto);
        return new ResponseEntity(result, null, HttpStatus.OK);
    }
}

и мой dto

@RequiredArgsConstructor
@Getter
@Setter
@ToString
@EqualsAndHashCode
@JsonPropertyOrder({"users", "error"})
public class UsersDto {
    @JsonProperty("users")
    public List<User> users;
    @JsonProperty("error")
    public String error;

    public Users(List<User> users) {
        this.users = users;
    }
}



import org.hibernate.validator.constraints.Length;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.ZonedDateTime;
import java.util.List;


@ToString
@Getter
@Setter
public class User {
    @Max(10)
    @JsonProperty("name")
    public String name;
}

, поэтому, когда я использую проверку стартового загрузочного устройства - проверка длины имя поля - не работает! Я попытался пометить класс dto как @Validated, и это не помогло мне.

Чтобы решить эту проблему, я помечаю поле пользователей в Users dto как @Valid, и оно начало проверяться, но я думаю, что это плохая практика ..

Как исправить эту проблему правильным способом и почему эта проблема возникает?

ps, когда проверка начала работать

@RequiredArgsConstructor
@Getter
@Setter
@ToString
@EqualsAndHashCode
@JsonPropertyOrder({"users", "error"})
@Validated
public class UsersDto {
    @Valid
    @JsonProperty("users")
    public List<User> users;
    @JsonProperty("error")
    public String error;

    public Users(List<User> users) {
        this.users = users;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...