MapleStory Cookie With Halo

โœจ UI/๐Ÿ–ค View Templates

[Thymeleaf][SpringBoot]์Šคํ”„๋ง์ด ์ง€์›ํ•˜๋Š” ํƒ€์ž„๋ฆฌํ”„ ๊ธฐ๋Šฅ(์ž…๋ ฅ์œ„์ฃผ)

๋‰ด์ด NUEY 2025. 3. 11. 15:46
๋ฐ˜์‘ํ˜•

 

 ํƒ€์ž„๋ฆฌํ”„ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์Šคํ”„๋ง์ด ํŒํŒ ๋ฐ€์–ด์ฃผ๋Š” ํƒ€์ž„๋ฆฌํ”„๋Š” ์Šคํ”„๋ง์ด ์ง€์›ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋”ฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
 ํŠนํžˆ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ๋•Œ ํƒ€์ž„๋ฆฌํ”„๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋งค๋‰ด์–ผ ์„ค์ • ํ•„์š”์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€ป ๋งค๋‰ด์–ผ : https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html

 


 

 

  • <form> 
    1. ์ž๋ฐ”๋กœ์ง์—์„œ ๋นˆ ๊ฐ์ฒด๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.
      java ๋กœ์ง
    2. <form action="item.html" th:action th:object="${item}" method="post">
      th:objec๋กœ ํ•ด๋‹น ๋นˆ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

    3. <input type="text" th:field="*{itemName}" 
      th:field์—์„œ ํ•ด๋‹น ๊ฐ์ฒด์˜ ํ•„๋“œ๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

      โ€ป ์ด๋ฅผ '์„ ํƒ ๋ณ€์ˆ˜' ๋ผ๊ณ  ํ•˜๋ฉฐ, ${item.itemName}์œผ๋กœ๋„ ์ ์„ ์ˆ˜ ์žˆ๋‹ค.

    4. ๊ฒฐ๊ณผ
      • th:field์—์„œ ์ง€์ •ํ•œ ์ด๋ฆ„์œผ๋กœ id์™€ name์ด ์ƒ์„ฑ๋˜๊ณ , ๋นˆ value๋„ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
    5. ์ˆ˜์ • ํผ ์˜ˆ์‹œ
      • <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๋Š” ์ง€์šฐ์ง€ ๋ง์ž..์ด์œ  ๋ชจ๋ฅผ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค๐Ÿ˜…
  • ๋‹จ์ผ ์ฒดํฌ๋ฐ•์Šค
    1. ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.
      ๊ฒฝ๋กœ์™€ ํŒŒ์ผ
      enum
    2. ํƒ€์ž„๋ฆฌํ”„

      • ์‚ฌ์šฉ๋ฒ•1
        • checkbox์˜ id์™€ ๋™์ผํ•˜๊ฒŒ hidden๊ฐ’์„ _id๋กœ ์ง€์ •ํ•˜๋ฉด
          → ๋ฏธ์ฒดํฌ ์‹œ  false๋กœ, ์ฒดํฌ ์‹œ true๋กœ ์ž๋™์œผ๋กœ ์Šคํ”„๋ง์ด ๋„˜๊ฒจ๋ฐ›๋Š”๋‹ค.

          โ€ป ํ•˜์ง€๋งŒ ์ด๋Š” ์ผ์ผํžˆ hiddenํ•„๋“œ๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•œ๋‹ค.

      • ์‚ฌ์šฉ๋ฒ•2
        • <input type="checkbox" id="open" th:field="*{open}"  class="form-check-input">
          th:field๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ hiddenํ•„๋“œ๊นŒ์ง€ ์ƒ์„ฑํ•ด์ค€๋‹ค.

        • ๊ฒฐ๊ณผ
    3. ์ƒํ’ˆ์ƒ์„ธ
      ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™๋‹ค. ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” disabled๋งŒ ์ถ”๊ฐ€๋๋‹ค.
      ๊ฒฐ๊ณผ

      • ํƒ€์ž„๋ฆฌํ”„๋Š” boolean๊ฐ’์— ๋”ฐ๋ผ ์•Œ์•„์„œ true์ด๋ฉด checked๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

      • false์ผ ๊ฒฝ์šฐ 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๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.


  • ๋ผ๋””์˜ค ๋ฒ„ํŠผ
    • code
      enum class
      controller
      thymeleaf
    • ๊ฒฐ๊ณผ
      radio๋Š” ํ•œ๋ฒˆ ์„ ํƒํ•˜๋ฉด, ์ฒดํฌํ•ด์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— hiddenํ•„๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์•˜๋‹ค.
    • ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํƒ€์ž„๋ฆฌํ”„์—์„œ Enumํด๋ž˜์Šค ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” ์ด๋Ÿฐ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค.
       th:each="type : ${T(neuyshop.domain.item.itemType).values()}
      "๋ณ€์ˆ˜๋ช… : ${T(๊ฒฝ๋กœ).values()}"


  • ์…€๋ ‰ํŠธ ๋ฐ•์Šค
    • code
    • ๊ฒฐ๊ณผ
    • <select>ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ ์™ธ์—๋Š” ์œ„ ์ฝ”๋“œ๋“ค๊ณผ ํฐ ์ฐจ์ด๋Š” ์—†๋‹ค.

 


โ€ป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373E

๋ฐ˜์‘ํ˜•