Существует приложение для весенней загрузки с 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;
}
}