2013-07-17 3 views
4

У меня есть таблица с данными из базы данных (динамически вставлять). В одной колонке я устанавливаю флажок. Теперь я хочу выбрать один из них и отправить в следующую форму (я выбираю один продукт и отправляю свойства в другую форму. В этой форме должны отображаться свойства только для выбранного продукта). Но я не знаю, какое значение вставляет значение th: field = "* {}". Я пробовал много решений, но не работал. Мой HTML-форм со всей таблицей продукции:Значения для th: атрибуты поля в флажке

<form action="/oferta/zamow" th:action="@{/oferta/zamow}" th:object="${oferta}" method="post"> 
     <table border="1" id="display-data"> 

     <tr> 
     <td>#</td> 
     <td>title</td> 
     <td>author</td> 
     <td>rok</td> 
     <td>cena</td> 
     <td></td> 
     </tr> 

     <tr th:each="produkt, pozycja : ${oferta}"> 
     <td th:text="${pozycja.count}"></td> 
     <td> 
     <span th:text="${produkt.tytul}" ></span> 
     </td> 
     <td> 
     <span th:text="${produkt.autor}"></span> 
     </td> 
     <td> 
     <span th:text="${produkt.rok}"></span> 
     </td> 
     <td> 
     <span th:text="${produkt.cena}"></span> 
     </td> 
     <td> 
     <input type="submit" value="zamow" /> 
     <!-- <a th:href="@{/zamowienie}" >zamow</a>--> 
     </td> 
     <td> 
     <label >zamow</label> 
     <input type="checkbox" th:field="*{produkt}" th:value="${produkt}"/> 
     </td> 
     </tr> 
     </table> 
     </form> 


Форма для отображения выберите продукт:

<form action="/zamowienie/zam" th:action="@{/zamowienie/zam}" th:object="${zamowienie}" method="post"> 
     <table border="1" id="display-data"> 
     <tr align="center"> 
     <td colspan="2"> 
     twoje zamowienie 
     </td> 
</tr> 
<tr > 
     <td > 
     tytul 
     </td> 
     <td> 
     <span th:text="${produkt.tytul}"></span> 
     </td> 
</tr> 
<tr > 
     <td> 
     autor 
     </td> 
     <td> 
     <span th:text="${produkt.autor}" ></span> 
     </td> 
</tr> 
<tr > 
     <td> 
     rok 
     </td> 
     <td> 
     <span th:text="${produkt.rok}"></span> 
     </td> 
</tr> 
    <tr> 
     <td> 
     cena 
     </td> 
     <td> 
     <span th:text="${produkt.cena}"></span> 
     </td> 
</tr> 
<tr> 
     <td> 
     data zlozenia zamowienia 
     </td> 
     <td> 
     <span th:text="${datazam}"></span> 
     </td> 
</tr> 
</table> 
</form> 


Спасибо за помощь.

ответ

2

Взгляните на документы интеграции весны тимелеафа.

Поле all th: сопоставляется с объектом команды. Вот почему вам нужно выражение * {}.

Единственное, что движок шаблона не может сделать (пока), это прямое отображение полей внутри цикла. Поэтому вы не можете использовать метод * {} для ссылки на переменную produkt из цикла.

Что вам нужно сделать, это использовать индекс th: каждое выражение и построить аксессуар свойств с предварительно оцененным выражением для индекса.

<input type="checkbox" th:field="*{produkts[__${index}__].checked" /> 

Вам не нужно поле th: value, th: оно заботится об этом. (За исключением, если вы хотите его заменить)

7

Я не уверен, что это ваш ответ, но вы можете найти пример на http://www.thymeleaf.org/doc/html/Thymeleaf-Spring3.html#checkbox-fields.

Вот простой пример, иллюстрирующий использование флажка в Thymeleaf с Spring MVC.

Контроллер:

@RequestMapping(value = "/showForm", method=RequestMethod.GET) 
public String showForm(Model model) { 
    List<String> allItems = new ArrayList<String>(); 
    allItems.add("value1"); 
    allItems.add("value2"); 
    allItems.add("value3"); 
    model.addAttribute("allItems", allItems); 

    Foo foo = new Foo(); 
    List<String> checkedItems = new ArrayList<String>(); 
    // value1 will be checked by default. 
    checkedItems.add("value1"); 
    foo.setCheckedItems(checkedItems); 
    model.addAttribute("foo", foo); 

    ... 
} 

@RequestMapping(value = "/processForm", method=RequestMethod.POST) 
public String processForm(@ModelAttribute(value="foo") Foo foo) { 
    // Get value of checked item. 
    List<String> checkedItems = foo.getCheckedItems(); 
    ... 
} 

HTML:

<form action="#" th:action="@{/processForm}" th:object="${foo}" method="post"> 
    <div th:each="item : ${allItems}"> 
    <input type="checkbox" th:field="*{checkedItems}" th:value="${item}" /> 
    <label th:text="${item}">example</label> 
    </div> 
    <input type="submit" /> 
</form> 

Foo.java:

public class Foo { 
    private List<String> checkedItems; 

    public List<String> getCheckedItems() { 
    return checkedItems; 
    } 

    public void setCheckedItems(List<String> checkedItems) { 
    this.checkedItems = checkedItems; 
    } 
} 

Надеется, что это помогает.

 Смежные вопросы

  • Нет связанных вопросов^_^