• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

select 박스도 필수입력으로 할려면 어떻게 해줘야 할까요?

23.09.24 19:27 작성 조회수 275

0

<td>
                                        <div class="inner">
                                            <select class="select" th:field="*{delivery}">
                                                <option value="">배송방식 선택</option>
                                                <option th:each="list : ${delivery}"
                                                        th:value="${list.deliveryCode}"
                                                        th:text="${list.displayName}">단위</option>
                                            </select>
                                        </div>
                                        <div class="field-error" th:errors="*{delivery}">배송방식 오류</div>
                                    </td>
@NotNull(message = "배송방식을 선택해 주세요.")
private String deliveryCode;                    // 단위명

위와같이 필수 입력값을 체크할려고 하는데 다른 항목들은 잘 되는데, select 부분에서는 에러메시지도 안뜨고, 필수 입력값이라고도 안뜨네요..ㅠㅠ

 

delivery 값은 글 등록시 다른 테이블에서 가져와서 목록을 뿌려준 코드입니다.

글 등록시 다른 항목들은 모두 입력을 할 수 있도록 해주고, delivery값만 다른 테이블에 저장되어있는 값을 가져와서 목록중에 선택하도록 만들었는데, 필수입력 체크나 오류메시지가 안뜨네요..

 

 

답변 1

답변을 작성해보세요.

1

codesweaver님의 프로필

codesweaver

2023.09.24

안녕하세요. 인프러너님, 공식 서포터즈 코즈위버입니다.

백엔드에서 필수값을 처리하는 방법과 html에서 막는 방법이 있는데요,

우선 백엔드에서 처리하는 방법은, 셀렉트에서 아무 값도 선택하지 않으면 delivery 값이 "" (빈문자열)로 넘어갑니다. 이 때는 @NotNull 과 더불어 @NotBlank 를 함께 사용하여 빈 값을 잡아내어 예외처리할 수 있습니다.

프론트에서 처리하는 방법은 select 태그에 required 속성을 적용하는 방법입니다. 이 외에도 자바스크립트를 이용해 사용자가 셀렉트 값을 반드시 선택하도록 제어할 수 있습니다.

감사합니다.

@NotNull로는 안됐었는데 @NotBlank로 하니까 처리가 되네요.
감사합니다.

생각해보니 왜 @NotNull로만 체크할려고 했었는지..ㅠㅠ 체크가 안되는게 당연하네요^^ㅋㅋㅋ