2015-11-25 21 views
13

db.htmlThymeleaf Map Mẫu Binding

<div th:each="pr, stat: *{mergeMap}"> 
    <tr> 
     <td><input type="text" name="key" th:value="${pr.key}" /></td> 
     <td><input type="text" name="value" th:value="${pr.value}" /></td> 
    </tr> 
</div> 

Mở trình đầu vào này, tôi luôn luôn nhận mergeMap để được sản phẩm nào tại Controller mùa xuân. Những gì cần được thực hiện để có được giá trị của mergeMap?

Controller.java

@RequestMapping(value = "/shot") 
    public String saveMergeProducts(@ModelAttribute(value="prod") MergedProductInfoDTO prod, BindingResult bindingResult, 
      Model model, HttpServletRequest request) { 
     System.out.println(prod.toString()); 
     return "forward:/backoffice/db"; 
    } 

HTML

<form action="#" th:action="@{shot}" method="POST" th:object="${prod}"> 
      <tr> 
      <td><span th:text="${index.index}"></span></td> 
       <td><input type="text" name="id" th:value="*{id}" th:readonly="readonly" /></td> 
       <td><input type="text" name="categoryName" th:value="*{categoryName}" th:readonly="readonly" /></td> 
       <td><input type="text" name="subCategoryName" th:value="*{subCategoryName}" th:readonly="readonly" /></td> 
       <td><input type="text" name="productBrand" th:value="*{productBrand}" /></td> 
       <td><input type="text" name="productSubBrand" th:value="*{productSubBrand}" /></td> 
       <td><input type="text" name="series" th:value="*{series}" /></td> 
       <td><input type="text" name="model" th:value="*{model}" /></td> 
      </tr> 
     <tr> 
      <td colspan="7"> 
          <tr> 
           <th>KEY</th> 
           <th>VALUE</th> 
          </tr> 
          <div th:each="pr, stat: *{mergeMap}"> 
           <tr> 
            <td><input type="text" name="mergeMapKey" th:value="${pr.key}" /></td> 
            <td><input type="text" name="mergeMapValue" th:value="${pr.value}" /></td> 
           </tr> 
          </div> 
         </table> 
        </td> 
        <td><input type="text" name="tags" th:value="*{tags}" /></td> 
        <td><input type="submit" value="Submit" /></td> 
       </tr> 

Trả lời

4

Để truy cập vào Map tài sản của đậu form-sao lưu, sử dụng tiền xử lý __${...}__

<div th:each="pr, stat: *{mergeMap}"> 
    <tr> 
     <td><input type="text" name="value" th:value="${pr.key}" readonly="true"/></td> 
     <td><input type="text" name="value" th:field="*{mergeMap[__${pr.key}__]}"/></td> 
    </tr> 
</div> 

gì nó nó đánh giá biểu thức bên trong đầu tiên trước khi đánh giá toàn bộ expres sion. Lưu ý rằng trong trường hợp này, không nên sửa đổi ${pr.key} để cập nhật sẽ được phản ánh vào thuộc tính bản đồ của bean được liên kết với biểu mẫu.

Tham chiếu: http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#dynamic-fields

+0

hợp nhất Giá trị bản đồ không được điền trong thẻ thymeleaf. –

+0

Bản đồ phải được chuẩn bị sẵn với các phím. Các phím này sẽ được sử dụng để cập nhật các giá trị trong bản đồ cho phù hợp. – Bnrdo

+0

bản đồ chứa cả khóa và giá trị, làm thế nào tôi có thể điền các giá trị của nó? –

Các vấn đề liên quan