Thymeleaf - 输入动态字符串列表

Thymeleaf - Input Dynamic List Of String

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

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 对象发送到我的控制器的方法。

您需要做的第一件事是为您的页面创建一个控制器。从那里你加载到 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>

实际上,它更多的是关于 Spring 活页夹而不是 thymeleaf。每当用户添加新输入时,然后通过使用 JavaScript 将 <input name="ingredients[0]" /> 附加到表单。之后每次将索引递增 1,因此,下一个追加将是 <input name="ingredients[1]" />。等等。有关详细信息,请参阅此 answer