Thymeleaf - 输入动态字符串列表

时间:2016-02-12 05:45:49

标签: java spring-mvc thymeleaf

我想从用户添加动态输入字段列表。组合这些不同的输入并将它们作为列表从视图传递给控制器​​。 这是我的域类

public class HTMLPage {

    @Size(min = 3)
    @NotNull
    private List<String> ingredients;
    @Size(min = 5)
    @NotNull
    private List<String> method;
    @Size(min = 3)
    @NotNull
    private String recipeName;
    //getter setters

 }

我对百里香的全新。我已经完成了所有可能的教程。有不同的方法来迭代列表,但我找不到一种方法来动态输入字符串列表并将完整的HTMLPage对象发送到我的控制器。

2 个答案:

答案 0 :(得分:2)

实际上,它更多的是关于Spring绑定而不是thymeleaf。每当用户添加新输入时,您都可以使用JavaScript将<input name="ingredients[0]" />附加到表单。之后每次将索引递增1,那么,下一个追加将是<input name="ingredients[1]" />。等等。有关详细信息,请参阅此{{3}}。

答案 1 :(得分:0)

您需要做的第一件事是为您的页面创建一个控制器。从那里你加载到spring的信息,在你的情况下列表,在我的情况下,我使用了一个ModelMap,有很多不同的东西。

@RequestMapping(value = "/assessment/", method = RequestMethod.GET)
public String showPage(ModelMap model, Principal principal) {
    [...]

    List<Assessment> list = new ArrayList<Assessment>();
    [...]
    model.addAttribute("assessments", list);
    [...]
    model.addAttribute(REQUEST_VIEW, new Gson().toJson(requestView));
    return "assessment"; //name of your page in spring config
}

然后将您的配置放在Spring和Pom中。只需使用您配置的名称即可轻松访问信息。

<table class="table-row-selected">
    <tbody>
    <div th:each="assessment : ${assessments}" th:remove="tag">
        <tr th:attr="ng-click='selectedAssessment(\''+ ${assessment.getTypeCode()}+'\' , \'' +${assessment.getName()} +'\', \'' +${assessment.isLookUpSaid()} +'\', \'' +${assessment.getLanguages()} +'\');', ng-mouseover='refreshDescription(\''+ ${assessment.getDescription()}+'\')'">
            <td><strong th:text="${assessment.getName()}"></strong></td>
        </tr>
    </div>
    </tbody>
</table>