Thymeleaf:迭代形式对象的属性元素

时间:2017-02-02 18:48:36

标签: spring-boot thymeleaf

我有一种百里香形式,我想在不使用JS的情况下制作动态。表单应填充类ProjectNewDto

的对象
public class ProjectNewDto {

    private List<UsernameAndPps> usernamesAndPps;

    ...
}

因此保留UsernameAndPps元素列表:

public class UsernameAndPps {
    private String username;
    private double pps;

    ...
}

控制器将对象作为模型的属性放置,并使用单个元素初始化usernamesAndPps列表:

@RequestMapping("/projectNewPageR")
public String projectNewPage(Model model) {
    if(!model.containsAttribute("project")) {
        ProjectNewDto project = new ProjectNewDto();
        project.setUsernamesAndPps(new ArrayList<UsernameAndPps>());
        project.getUsernamesAndPps().add(new UsernameAndPps("user",100.0));

        model.addAttribute("project",project);
    }
    return "views/projectNewPage";
}

然后我尝试用百里香的方式表现出来

<form id="new_project_form" action="#" th:action="@{/views/projectNewSubmit}" th:object="${project}" method="post">
    <div th:each="usernameAndPps : $(project.usernamesAndPps)">
        <input type="text" th:value="${usernameAndPps.username}"></input>
        <input type="number" th:value="${usernameAndPps.pps}"></input>
    </div>
    <button type="submit" class="btn btn-lg btn-primary btn-block">Create</button>
</form>

我也尝试使用$(usernamesAndPps)代替$(project.usernamesAndPps),但错误仍然相同:

Could not parse as each: "usernameAndPps : $(project.usernamesAndPps)"

我已经删除了很多其他与sytle相关的后缀,但仍然是某种错误。有什么想法吗?

下一步是添加另一个按钮以向usernamesAndPps属性添加元素。让我们保持积极态度。

1 个答案:

答案 0 :(得分:0)

好的,我回答了,但我应该删除它。

大括号而不是括号

<div th:each="usernameAndPps : ${project.usernamesAndPps}">