我想从用户添加动态输入字段列表。组合这些不同的输入并将它们作为列表从视图传递给控制器。 这是我的域类
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对象发送到我的控制器。
答案 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>