Thymeleaf 修改和发布当前对象

Posted

技术标签:

【中文标题】Thymeleaf 修改和发布当前对象【英文标题】:Thymeleaf Modify and Post Current Object 【发布时间】:2017-02-22 12:37:36 【问题描述】:

我有一个表单并通过 Thymeleaf 将数据发布到控制器:

<form action="lia.html" th:action="@/lia" th:object="$myRequest" method="post">

在我的 html 页面的另一个地方,如果用户单击特定按钮,我想修改该对象并将其发送到同一个控制器。

我已经有了那个已经初始化的对象。按钮不是任何形式的一部分。如何使用 Thymeleaf 将该对象发送到控制器中。

PS:我知道我可以通过 javascript 发送它或将此类按钮放入表单中,但我想学习 Thymeleaf 方式。

【问题讨论】:

当您说“Thymeleaf 方式”时,您就会明白 Thymeleaf 只是一种用于格式化 HTML 的标记语言,因此没有办法专门使用标记来做任何动态的事情。您只需要使用直接的 HTML 表单来发布数据,然后转到新页面。这有意义吗?我不确定你在这里要求什么。 Thymeleaf 具有类似于 Spring EL 的功能。它不仅不生成 HTML,还可以在 MVC 中填充模型。 嗯,我简要地查看了他们的文档以及所有与模板相关的内容,但我没有看到任何关于客户端的内容,这就是我假设您要问的问题。下面的答案有帮助吗?我仍然不太清楚您要做什么。 Thymeleaf 只有 th:object、th:field 和 forms。当您开始谈论修改表单之外的对象时,thymeleaf 对此类内容没有任何支持(而且它并非旨在解决这些问题)。此时,您只是在查看 Spring 提供的解决这些问题的任何方法。 从 Spring 方面获得解决方案会很好吗? 【参考方案1】:

我认为与您正在寻找的唯一类似的方法是将绑定与 Spring EL 表达式结合使用。

感谢 Spring MVC 中先进的表单字段绑定功能, 我们可以使用复杂的 Spring EL 表达式来绑定动态表单字段 到我们的表单支持 bean。这将允许我们创建新的 Row 对象 在我们的 SeedStarter bean 中,并将这些行的字段添加到我们的表单中 用户请求。

看看下一个链接,哪里有很好的例子:

http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#dynamic-fields

按钮

<button type="submit" name="removeRow" 
            th:value="$rowStat.index" th:text="#seedstarter.row.remove">Remove row</button>

请求映射

@RequestMapping(value="/seedstartermng", params="removeRow")
public String removeRow(
    final SeedStarter seedStarter, final BindingResult bindingResult, 
    final HttpServletRequest req) 

    final Integer rowId = Integer.valueOf(req.getParameter("removeRow"));
seedStarter.getRows().remove(rowId.intValue());
    return "seedstartermng";

【讨论】:

以上是关于Thymeleaf 修改和发布当前对象的主要内容,如果未能解决你的问题,请参考以下文章

Blade 到 Thymeleaf 模板和视图转换的疑惑

thymeleaf入门

springboot中模板 freemark,thymeleaf,jsp

Thymeleaf3语法详解解解解解

009 thymeleaf的引入

thymeleaf前端数据绑定