복붙노트

[SPRING] Spring과 Thymeleaf : 컨트롤러에 객체 보내기 : 각 테이블

SPRING

Spring과 Thymeleaf : 컨트롤러에 객체 보내기 : 각 테이블

Thymeleaf를 사용하여 각 속성을 사용하여 경험 데이터 테이블을 만들고 있습니다. 내 목표는 클릭 할 때 클릭 한 행과 일치하는 내 컨트롤러에 경험 객체를 보낼 각 행에 제출 버튼이있는 것입니다. 버튼을 누릅니다.

뭐가 잘못 됐는지 모르고 온라인으로이 문제를 해결할 수있는 것 같지 않습니다.

웹 페이지 코드의 제 섹션은 다음과 같습니다.

<div th:unless="${#lists.isEmpty(borrower.experiences)}">
    <h2>List of Experiences</h2>
    <!--  <form ACTION="#" th:action="@{/initiate-edit}" th:object="${experience}"
      method="POST">-->
        <table id="your-table-id">
          <thead>
            <tr>
              <td>Edit Buttons</td>
                <th>Date Planted</th>
                <th>Rating</th>
                <th>Category</th>
                <th>Dept</th>
                <th>Resolution</th>
                <th>Source</th>
                <th>Last Update Date</th>
                <th>Last Update Name</th>
                <th>Comment</th>
            </tr>
          </thead>
          <tbody>
              <tr th:each="experience : ${borrower.experiences}">       
                <td>
                  <form ACTION="#" th:action="@{/initiate-edit}" 
                    th:object="${experience}" method="POST">
                    <!--<a th:href="@{/initiate-edit/}">CLICK</a>-->
                    <button type="submit">Submit</button>
                  </form>
                </td>
                <td th:text="${experience.experienceDate}">13/01/2014</td>
                <td th:text="${experience.rating}">4</td>
                <td th:text="${experience.categoryShortDesc}">Account and Billing</td>
                <td th:text="${experience.deptDesc}">Account and Billing</td>
                <td th:text="${experience.resolutionShortTx}">Account and Billing</td>
                <td th:text="${experience.source}">Account and Billing</td>
                <td th:text="${experience.lastUpdateDate}">Account and Billing</td>
                <td th:text="${experience.lastUpdatedName}">Account and Billing</td>
                <td th:text="${experience.commentsShort}">Account and Billing</td>    
              </tr>             
            </tbody>
       </table>    
</div>

내가 보내는 방법은 다음과 같습니다.

@RequestMapping(value = "/initiate-edit", method = RequestMethod.POST)
    public String initiateEdit(@AuthenticationPrincipal final User user, 
                               @ModelAttribute("SpringWeb")CustomerExperience editableExperience, final Model model) {

        LOG.info("THIS IS A TEST!!!" + editableExperience.getSsn());

        model.addAttribute("editableExperience", editableExperience);

        return EDIT_PAGE;

    }

해결법

  1. ==============================

    1.입력이 전송 될 때 양식을 입력으로 채워야합니다.

    입력이 전송 될 때 양식을 입력으로 채워야합니다.

    <form ACTION="#" th:action="@{/initiate-edit}" th:object="${experience}" method="POST">
         <input type="hidden" th:field="*{experienceDate}"/>
         <input type="hidden" th:field="*{rating}"/>
         <!-- ADD ALL THE OTHER FIELDS THAT ARE PART OF THE OBJECT -->
         <button type="submit">Submit</button>
    </form>
    

    이렇게하면 사용자의 개체 데이터가 숨겨 지지만 제출을 클릭하면 필요에 따라 개체 데이터가 전송됩니다 (현재있는 것처럼 양식이 전송되지 않고 전송됩니다).

  2. ==============================

    2.@ Aeseir의 답변에 따르면 "th : object"및 "th : field"에주의를 기울여야합니다. "필드"는 int, double, String, List가 될 수 있으며 객체에는 getter 및 setter가 있어야합니다. 이 경우

    @ Aeseir의 답변에 따르면 "th : object"및 "th : field"에주의를 기울여야합니다. "필드"는 int, double, String, List가 될 수 있으며 객체에는 getter 및 setter가 있어야합니다. 이 경우

    공용 수업 경험 {          문자열 필드.           목록 나열;          // getter () 및 setter ()     }

  3. from https://stackoverflow.com/questions/30926136/spring-and-thymeleaf-sending-an-object-to-a-controller-from-a-theach-table by cc-by-sa and MIT license