๋ฐ์ํ
ํ์๋ฆฌํ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ, ์คํ๋ง์ด ํํ ๋ฐ์ด์ฃผ๋ ํ์๋ฆฌํ๋ ์คํ๋ง์ด ์ง์ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ก ์ฌ์ฉํ ์๊ฐ ์๋ค.
ํนํ ์คํ๋ง๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ค์ด๋ก๋ ๋ฐ์ ๋ ํ์๋ฆฌํ๋ง ์ถ๊ฐํ๋ฉด ๋งค๋ด์ผ ์ค์ ํ์์์ด ์ฌ์ฉํ ์ ์๋ค.
โป ๋งค๋ด์ผ : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html
- <form>
- ์๋ฐ๋ก์ง์์ ๋น ๊ฐ์ฒด๋ฅผ ๋ณด๋ด์ค๋ค.
java ๋ก์ง - <form action="item.html" th:action th:object="${item}" method="post">
th:objec๋ก ํด๋น ๋น ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค. - <input type="text" th:field="*{itemName}"
th:field์์ ํด๋น ๊ฐ์ฒด์ ํ๋๋ค์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
โป ์ด๋ฅผ '์ ํ ๋ณ์' ๋ผ๊ณ ํ๋ฉฐ, ${item.itemName}์ผ๋ก๋ ์ ์ ์ ์๋ค. - ๊ฒฐ๊ณผ
- th:field์์ ์ง์ ํ ์ด๋ฆ์ผ๋ก id์ name์ด ์์ฑ๋๊ณ , ๋น value๋ ์ถ๊ฐ๋์๋ค.
- ์์ ํผ ์์
- <input type="text" id="id" name="id" class="form-control" value="1" th:value="${item.id}" readonly>
→
<input type="text" class="form-control" value="1" th:field="*{id}" readonly>
์ด์ ๊ฐ์ด ๋ ๊ฐ๋จํ๊ฒ ์์ ํ ์ ์๋ค. - code
๋๋๋ก id๋ ์ง์ฐ์ง ๋ง์..์ด์ ๋ชจ๋ฅผ ์๋ฌ๊ฐ ๋ฌ๋ค๐
- <input type="text" id="id" name="id" class="form-control" value="1" th:value="${item.id}" readonly>
- ์๋ฐ๋ก์ง์์ ๋น ๊ฐ์ฒด๋ฅผ ๋ณด๋ด์ค๋ค.
- ๋จ์ผ ์ฒดํฌ๋ฐ์ค
- ์ฒดํฌ๋ฐ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๋ก์ง์ ์ถ๊ฐํ์๋ค.
๊ฒฝ๋ก์ ํ์ผ enum - ํ์๋ฆฌํ
- ์ฌ์ฉ๋ฒ1
- checkbox์ id์ ๋์ผํ๊ฒ hidden๊ฐ์ _id๋ก ์ง์ ํ๋ฉด
→ ๋ฏธ์ฒดํฌ ์ false๋ก, ์ฒดํฌ ์ true๋ก ์๋์ผ๋ก ์คํ๋ง์ด ๋๊ฒจ๋ฐ๋๋ค.
โป ํ์ง๋ง ์ด๋ ์ผ์ผํ hiddenํ๋๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ฏ๋ก ์๋์ฒ๋ผ ์ฌ์ฉํ๋ค.
- checkbox์ id์ ๋์ผํ๊ฒ hidden๊ฐ์ _id๋ก ์ง์ ํ๋ฉด
- ์ฌ์ฉ๋ฒ2
- <input type="checkbox" id="open" th:field="*{open}" class="form-check-input">
th:field๋ง ์ฌ์ฉํ๋ฉด ์๋์ฒ๋ผ hiddenํ๋๊น์ง ์์ฑํด์ค๋ค. - ๊ฒฐ๊ณผ
- ์ฌ์ฉ๋ฒ1
- ์ํ์์ธ
์ ์ฝ๋์ ๊ฐ๋ค. ์์ ๋ถ๊ฐ๋ฅํ๊ฒ๋ disabled๋ง ์ถ๊ฐ๋๋ค. ๊ฒฐ๊ณผ
- ํ์๋ฆฌํ๋ boolean๊ฐ์ ๋ฐ๋ผ ์์์ true์ด๋ฉด checked๋ฅผ ๋ง๋ค์ด์ค๋ค.
- false์ผ ๊ฒฝ์ฐ checked ์์ฑ ์์ฒด๋ฅผ ์ ๋ง๋ ๋ค.
- ํ์๋ฆฌํ๋ boolean๊ฐ์ ๋ฐ๋ผ ์์์ true์ด๋ฉด checked๋ฅผ ๋ง๋ค์ด์ค๋ค.
- ์ฒดํฌ๋ฐ์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ๋ก์ง์ ์ถ๊ฐํ์๋ค.
- ๋ฉํฐ ์ฒดํฌ๋ฐ์ค
- java๋ก์ง
ModelAttribute๋ฅผ ์ ์ญ๋ณ์๋ก ์ง์ ํด ๊ฐ์ ๊ฐ์ ธ์จ๋ค. - ํ์๋ฆฌํ
- ๊ฒฐ๊ณผ
- <div th:each="region : ${regions}" class="form-check form-check-inline">
→ ๋ฐ๋ณต๋ฌธ์ผ๋ก regions์ ๊ฐ๋ค์ ๋ถ๋ฌ์จ๋ค. - <input type="checkbox" th:field="*{regions}" th:value="${region.key}" class="form-check-input">
→ value ๊ฐ์ผ๋ก key๋ฅผ ๋ด์์ค๋ค.
๋ฐ๋ณต๋ฌธ์ด๊ธฐ ๋๋ฌธ์ id, name, value ์์ฑ์ th:field๋ฅผ ์ด์ฉํด ์๋ํํ๋ค.
(์ฌ๊ธฐ์ *{regions}๋ง ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ถ๋ฌ์ค๋ ๊ฒ ์๋๋ผ <form>์์ ๋ถ๋ฌ์จ ๊ฐ์ด๋ค) - <label th:for="${#ids.prev('regions')}" th:text="${region.value}" class="form-check-label">์์ธ</label>
→์ฌ๊ธฐ์ ${#ids.prev('regions')}๋ ์ th:field์ ์์กดํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ํด๋น ๋ฐ์ดํฐ์ ๋ง๋ text๋ฅผ ์ ์ด์ค ์ ์๋ค. - ํ๋ ํ๋๊ฐ ์ถ๊ฐ๋์ด, ๊ฐ์ด ์ ํํ์ง ์์๋ ๋น ๊ฐ[ ]์ผ๋ก๋ก ๋ฐํ๋๋ค.
- ์ํ ์์ธ์ ์ ์ฉํด๋ณด์
- th:value๋ก ๊ฐ์ ธ์จ ๊ฐ์ด ์์ผ๋ฉด th:field๊ฐ ์์์ checked๋ก ๋ง๋ค์ด์ค๋ค.
- th:value๋ก ๊ฐ์ ธ์จ ๊ฐ์ด ์์ผ๋ฉด th:field๊ฐ ์์์ checked๋ก ๋ง๋ค์ด์ค๋ค.
- java๋ก์ง
- ๋ผ๋์ค ๋ฒํผ
- code
enum class controller thymeleaf - ๊ฒฐ๊ณผ
radio๋ ํ๋ฒ ์ ํํ๋ฉด, ์ฒดํฌํด์ ๊ฐ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ hiddenํ๋๊ฐ ๋ค์ด๊ฐ์ง ์์๋ค. - ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ์๋ฆฌํ์์ Enumํด๋์ค ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก๋ ์ด๋ฐ ์ฝ๋๊ฐ ์๋ค.
th:each="type : ${T(neuyshop.domain.item.itemType).values()}"
"๋ณ์๋ช : ${T(๊ฒฝ๋ก).values()}"
- code
- ์
๋ ํธ ๋ฐ์ค
- code
- ๊ฒฐ๊ณผ
- <select>ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ ์ธ์๋ ์ ์ฝ๋๋ค๊ณผ ํฐ ์ฐจ์ด๋ ์๋ค.
- code
โป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373E
๋ฐ์ํ
'โจ UI > ๐ค View Templates' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Thymeleaf]ํ์๋ฆฌํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ฌ์ฉ๋ฒ ์ด์ ๋ฆฌ (0) | 2025.03.09 |
---|---|
[Thymeleaf] ํ์๋ฆฌํ๋? (0) | 2025.03.07 |
[Thymeleaf]ํ์๋ฆฌํ ์ฌ์ฉ๋ฒ ๊ฐ๋จ์ ๋ฆฌ (0) | 2025.03.03 |
[JAVA]JSP๋ก ํ์๊ด๋ฆฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ (0) | 2025.02.28 |
[JSP] jsp๋? ๊ธฐ๋ณธ๊ตฌ์ฑ (0) | 2024.12.31 |