public class PostDto {
private int id;
private String title;
private String content;
private String writer;
private int boardId;
설명 출처 : 블로그
@NotBlank
주석이 달린 요소는 null이 아니어야 하며, 하나 이상의 공백이 아닌 문자를 포함해야 합니다.
CharSequence 타입을 허용합니다.
@NotEmpty
주석이 달린 요소는 null이거나 비어있으면 안됩니다.
지원되는 타입은 CharSequence, Collection, Map, 배열입니다.
각각의 길이나 크기가 평가됩니다.
@NotNull
주석이 달린 요소는 null이 아니어야 합니다.
모든 타입을 허용합니다.
@Null
주석이 달린 요소는 null 이어야 합니다.
모든 타입을 허용합니다.
@Size(min=, max=)
주석이 달린 요소의 크기는 지정된 경계를 포함한 사이에 있어야 합니다.
지원되는 타입은 CharSequence, Collection, Map, 배열입니다.
null 요소는 유효한 것으로 간주됩니다.
요소의 크기는 min보다 크거나 같아야 하고, max보다 작거나 같아야 합니다.
min의 default 값은 0, max의 default 값은 2147483647 입니다.
1) dependencies 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
2) PostDTO
public class PostDto {
private int id;
@NotNull
private String title;
@Size(max=400)
private String content;
@Size(min=3, max=10)
private String writer;
3) PostController
@LogArguments
@PostMapping()
@ResponseStatus(HttpStatus.CREATED)
public void createPost(
@Valid
@RequestBody PostDto postdto
){
this.postservice.createPost(postdto);
}
4) postman 테스트
{
"content":"test posting",
"writer":"shucream"
}
위와 같이 title 이 null인 채로 보내면
위와 같은 not null 에러가 아주 기특하게 뜨게 된다
1) ValidTestDto 만들기
public class ValidTestDto {
@NotNull //변수가 null 여부
private String notNullString;
@NotEmpty //"" => 이건 null은 아닌데 empty인 경우
//null이 아니면서 Object.size>0인지
private String notEmptyString;
@NotBlank //공백이 아닌 문자열
private String notBlankString;
@NotEmpty
private List<String> notEmptyStringList;
2) 테스트를 위해 controller 코드 추가
@PostMapping("test-valid")
public void testValid(@Valid @RequestBody ValidTestDto dto){
logger.info(dto.toString());
}
3) 테스트
postdto
"title":" ", 이렇게 보내면 에러
.DefaultMessageSourceResolvable: codes [postDto.title,title]; arguments []; default message [title]]; default message [공백일 수 없습니다]] ]
testvaliddto
{
"notNullString":" ",
"notEmptyString":"test posting",
"notBlankString":"shucream",
"notEmptyStringList":[]
}