
์ธํด์ญ ํ๋์์ Spring Boot๋ฅผ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ๋น์
ํ์ํ ์ด๋ธ์Id,Name,Gender,Role์ปฌ๋ผ์ด ์กด์ฌํ์๋ค. ์ฌ์๋ถ๊ป์Gender์Role๊ณผ ๊ฐ์ ์ ๋ณํ์ง ์๋ ๊ฐ์Enum์ ํ์ฉํ๋ฉด ์ข๋ค๊ณ ํ์ ์ ์ฌ์ฉํด๋ณธ ๊ฒฝํ์ด ์๋ค.
Enum์ด๋ ๊ด๋ จ์ด ์๋ ์์๋ค์ ์งํฉ์ด๋ค. ์์๋ผ ํ๋ฉด final์ด๋ String๊ณผ ๊ฐ์ ๋ฌธ์์ด์ด๋ ์ซ์์ด์ ๊ณ ์ ํ ๊ฐ์ ์๋ฏธํ๋ค. ์ด๋ค ํด๋์ค๊ฐ ํด๋น ์์๋ก๋ง ๊ตฌ์ฑ๋์ด์๋ค๋ฉด, ๊ตณ์ด Class๋ก ์์ฑํ์ง์๊ณ Enum์ผ๋ก ์์ฑํ์ฌ 'ํด๋น ํด๋์ค๋ ์์๋ก๋ง ๊ตฌ์ฑ๋์ด์์ต๋๋ค' ๋ผ๋๊ฒ์ ๋ช
์ํด ์ค ์ ์๋ค.
Enum์ ์์ฑ์๋ private์ด๋ค. Enum์ ์์ฑ์๊ฐ ํด๋์ค ๋ก๋๋๋ ์์ ์์ ์์ฑ๋๊ธฐ ๋๋ฌธ์ public์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Compile์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์๋ ์ฝ๋๋ Role์ Enumํด๋์ค์ด๋ค. @Getter ์ด๋
ธํ
์ด์
์ ์ด์ฉํ์ฌ privateํ๊ฒ ์์ฑ์๋ฅผ ๊ตฌ์ฑํ์๋ค. ํด๋น ์์๋ฅผ ๊ตฌํํ ๋๋ map์ ์ฌ์ฉํ๋ ๊ฒ ์ฒ๋ผ ๊ดํธ์ด๊ณ ์ด๋ฆ๊ณผ value๋ฅผ ์จ์ฃผ๋ฉฐ ๋๋ค.
@Getter
@AllArgsConstructor
public enum Role {
ROLE_ADMIN("ROLE_ADMIN", "๊ด๋ฆฌ์"),
ROLE_MEMBER("ROLE_MEMBER", "ํ์");
private final String value;
private final String title;
}
ํ์๊ฐ์
์ ์งํํ ๋ Enum๊ณผ Thymeleaf๋ฅผ ์ด์ฉํ์ฌ ๋๋กญ๋ค์ด ํ์์ผ๋ก Gender๋ฅผ ๊ตฌ์ฑํ์๋ค. ๋จผ์ ํด๋น Enum์ ๊ตฌ์ฑํ์๊ณ Thymeleaf์ T๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ Enumํด๋์ค์ Value๊ฐ๋ค์ ๋ถ๋ฌ์ ๊ตฌํํ์๋ค.
์ฒ์์๋ Enum์์ ๋ฐ๋ก ๋นผ์ค์ง ์๊ณ Dto์์ ํด๋น Gender๋ฅผ ๊ฐ์ ธ์๋ค. ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ Dto์๋ Male, Female์ฒ๋ผ ์์ด๋ก ๋์ด์์๊ณ JS์์ convert๋ฅผ ํด์ค์ผ ๋๋ค๋ ๋จ์ ์ด ์์๋ค. Enum์ ์ฌ์ฉํ๊ณ Html์ ๊ตฌํํ ๋ ์ผ์ผํ ์ฑ๋ณ์ ์
๋ ฅ ํ ํ์์์ด ์์ํด๋์ค์ธ Enum์ ํตํด ๊ณ ์ ๋ ๊ฐ์ ๋ธ๋ฌ์ฌ ์ ์์๋ค.
Enum
@Getter
@AllArgsConstructor
public enum Gender {
Male("Male", "๋จ์"),
Female("Female", "์ฌ์");
private final String value;
private final String title;
}
HTML
<div class="mb-3">
<label class="form-label" for="gen">์ฑ๋ณ</label>
<div class="dropdown" id="gen">
<select onkeyup="checkGender()" class="form-control" id="gender" name="gender">
<option value="">์ฑ๋ณ</option>
<option th:each="genderValue : ${T(com.example.CUSHProject.enums.Gender).values()}"
th:value="${genderValue.value}"
th:text="${genderValue.title}"></option>
</select>
</div>
</div>