我正在尝试做同样的小服务,有时我会向我的 Rest Api 发送请求。 我遇到两个问题:
如何使用thymeleaf填写html表单中的字段? 我有这样的表单,想用当前值填充字段(th:value="${}" - 不适合我):
<form th:action="@{/offences/edit}" method="post" th:object="${createOffenceForm}"> <input th:field="*{name}" th:value="${currentOffence.name}"/> <input th:field="*{penaltyPoints}" th:value="${currentOffence.penaltyPoints}"/> <input th:field="*{amountOfFine}" th:value="${currentOffence.amountOfFine}"/> <button type="submit">UPDATE</button> </form>
问题在于,当我使用路径变量重定向到站点时,将 css 样式加载到 html 中。例如,我创建了带有两个按钮的 html。第一个是硬编码的:
<a th:href="@{/offences/test}" class="link" style="text-decoration: none"><button class="buttonOK" type="submit">EDIT</button></a>
这是第二个按钮之后 - 使用路径变量重定向:
<a th:href="@{'/offences/edit/' + ${offence.id}}" class="link" style="text-decoration: none"><button class="buttonOK" type="submit">EDIT</button></a>
对于您的表单数据未填写的问题,这是因为
th:field
和th:value
不能同时使用。所以 th:field
最终会覆盖你的值。
在你的情况下,我建议手动设置名称(和id)或将 th:object 替换为你想要返回的 bean 的填充版本,并且仅使用 th:field
至于第二个问题,它看起来像是在给我打电话后返回的错误片段,但至少需要有控制器功能和更完整的 html 来说明这一点。一般来说,建议每个问题有 1 个问题,而不是捆绑在一起。
好吧,我找到了灵魂。
modelMap.addAttribute("createOffenceForm", new CreateOffenceForm(offenceDTO.getName(), offenceDTO.getPenaltyPoints(), offenceDTO.getAmountOfFine()));