使用 PathVariable CSS 时未加载以及如何填写表单以在 thymeleaf 中更新

问题描述 投票:0回答:2

我正在尝试做同样的小服务,有时我会向我的 Rest Api 发送请求。 我遇到两个问题:

  1. 如何使用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>

  2. 问题在于,当我使用路径变量重定向到站点时,将 css 样式加载到 html 中。例如,我创建了带有两个按钮的 html。第一个是硬编码的:

    <a th:href="@{/offences/test}" class="link" style="text-decoration: none"><button class="buttonOK" type="submit">EDIT</button></a>

重定向后我的网站看起来像这样(一切正常,应该是这样): ` site with normal look

这是第二个按钮之后 - 使用路径变量重定向:

<a th:href="@{'/offences/edit/' + ${offence.id}}" class="link" style="text-decoration: none"><button class="buttonOK" type="submit">EDIT</button></a> 

加载后查看: broken view

html spring forms thymeleaf
2个回答
0
投票

对于您的表单数据未填写的问题,这是因为

th:field
th:value
不能同时使用。所以
th:field
最终会覆盖你的值。 在你的情况下,我建议手动设置名称(和id)或将 th:object 替换为你想要返回的 bean 的填充版本,并且仅使用
th:field

至于第二个问题,它看起来像是在给我打电话后返回的错误片段,但至少需要有控制器功能和更完整的 html 来说明这一点。一般来说,建议每个问题有 1 个问题,而不是捆绑在一起。


0
投票

好吧,我找到了灵魂。

  1. 要填写表单中的字段,我只需向 ModelMap 表单中添加字段即可。 像这样的东西和 html 中的 thymeleaf 自动填充字段。

modelMap.addAttribute("createOffenceForm", new CreateOffenceForm(offenceDTO.getName(), offenceDTO.getPenaltyPoints(), offenceDTO.getAmountOfFine()));

  1. 第二种解决方案也很简单。当控制器中的映射从 @GetMapping("/path/{id}") 更改为 @GetMapping("/path-{id}") 时 - 一切正常。其他款式没有问题...
© www.soinside.com 2019 - 2024. All rights reserved.