I have DTO which I want to restrict for size:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
public class CreateUserDTO {
@NotNull
@NotEmpty
@Size(min=1, max=20, message = "'Login' value '${validatedValue}' must be between {min} and {max} characters long.")
private String login;
@NotNull
@NotEmpty
@Size(min=1, max=45, message = "'Email' value '${validatedValue}' must be between {min} and {max} characters long.")
private String email;
@NotNull
@NotEmpty
@Size(min=1, max=20, message = "'First name' value '${validatedValue}' must be between {min} and {max} characters long.")
private String firstName;
@NotNull
@NotEmpty
@Size(min=1, max=20, message = "'Last name' value '${validatedValue}' must be between {min} and {max} characters long.")
private String lastName;
}
Rest controller:
@PostMapping("/create")
public ResponseEntity<?> create(@Valid @RequestBody CreateUserDTO dto) {
.....
return ok().build();
}
Any idea why I get this huge error message:
{
"errors": [
{
"status": 404,
"code": "1001",
"title": "Not found",
"detail": "Validation failed for argument [0] in public org.springframework.http.ResponseEntity<?> org.engine.rest.UsersController.create(org.engine.dto.CreateUserDTO): [Field error in object 'createUserDTO' on field 'login': rejected value [56dtttttttttt444444444465st]; codes [Size.createUserDTO.login,Size.login,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [createUserDTO.login,login]; arguments []; default message [login],20,1]; default message ['Login' value '56dtttttttttt444444444465st' must be between 1 and 20 characters long.]] ",
"extra": {
"detail": "Validation failed for argument [0] in public org.springframework.http.ResponseEntity<?> org.engine.rest.UsersController.create(org.engine.dto.CreateUserDTO): [Field error in object 'createUserDTO' on field 'login': rejected value [56dtttttttttt444444444465st]; codes [Size.createUserDTO.login,Size.login,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [createUserDTO.login,login]; arguments []; default message [login],20,1]; default message ['Login' value '56dtttttttttt444444444465st' must be between 1 and 20 characters long.]] "
}
}
]
}
"56dtttttttttt444444444465st".length(); $4 ==> 27. If the value is not what you sent, try{value}instead of${validatedValue}.