【发布时间】:2020-07-02 10:47:11
【问题描述】:
首先,我用 Thymeleaf 创建了一个简单的 HTML 表单,一切都很好。然后转到第 2 步,我将表单重新定位到一个片段。我这样称呼片段:
<div th:insert="~{address::form($(address)}"></div>
片段(在address.html中)是这样的:
<form th:fragment="form(address)" action="#" th:action="@{/address}" th:object="${address}" method="post">
<label>Street<label><span><input type="text" th:field="*{street}"></span>
<label>County:</label>
<span>
<select th:field="*{county}">
<option th:each="s : ${countyList}" th:value="${s.value}" th:text="${s.text}"></option>
</select>
</span>
...
但这不起作用,它正在抛出: java.lang.IllegalStateException: Bean 名称“street”的 BindingResult 和普通目标对象都不能用作请求属性
请帮助如何将整个表单移动到 Thymeleaf 片段中?还请添加组合的想法,以便我可以从模型 bean 中获取它们的列表。谢谢!
PS 控制器现在看起来像这样(添加和编辑),但可以改为使其成为 1 个功能:
@GetMapping(value="/address")
public String newAddress(AddressModel address, Model model) {
model.addAttribute("address", address);
model.addAttribute("countyList", countyService.listCombo());
...
return "index";
}
@GetMapping(value="/address/{id}")
public String editAddress(Model model, @PathVariable("id") Long id) {
AddressModel address = addressService.load(id);
model.addAttribute("address", address);
model.addAttribute("countyList", countyService.listCombo());
...
return "index";
}
【问题讨论】:
-
能否也请添加控制器?看起来您没有满足片段所具有的所有依赖项。
标签: spring spring-boot thymeleaf