如何设置百里香th:来自其他变量的字段值

新手上路,请多包涵

我有一个简单的文本输入字段,我必须从一个对象设置默认值并将其最终值保存在另一个对象中。以下代码不起作用。

 <div th:object="${form}">
    <input class="form-control"
           type="text"
           th:value="${client.name}"  //this line is ignored
           th:field="*{clientName}"/>
</div>

form 是 DTO 对象, client 是数据库中的 Entity 对象。

解决这种情况的正确方法是什么?

我的意思是不工作-假设初始值为client.name =“Foo”和form.clientName = null。我需要输入字段显示值为“Foo”,并且在表单提交后 form.clientName 值变为“Foo”。但是输入字段不显示任何内容,并且在提交 form.clientName 值仍然为空;

如果有人感兴趣,请使用以下结构解决此问题(在另一个问题中找到答案)。

 th:attr="value = ${client.name}"

原文由 Tobou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 245
1 个回答

好的,如果我正确理解了这个问题,您正在尝试为变量分配一个预定值,然后在 Thymeleaf 呈现该变量时将该变量填充到 html 表单中。如果这是您要问的,我也为此苦苦挣扎了几天,在阅读您的帖子后才找到答案,并认为我会分享。

我正在做的(希望这对某人有所帮助)试图自动为我的博客文章的 id 分配一个值,以便当用户提交它时,博客文章会自动获取我想要分配的 ID。

\*\*\* 我遇到的问题\*\*\* 当我像这样分配 id 变量 { th:field=”*{id}” } 时,表单输入框中的输出始终为“0”。所以我尝试了各种不同的方法来解决这个问题,比如添加一个 th:value 和一个 th:name,这总是导致大胖“0”。

所以,经过多次敲打我的脑袋,并在论坛上进行搜索,我发现了这个小小的快乐。

https://frontbackend.com/thymeleaf/hidden-inputs-in-thymeleaf

虽然它没有解决我的具体问题,但答案就在那里。我不会让你自己读,因为我讨厌那样。

\*\*\*\* 答案 ***

{在 HTML 表单中}

  <input class="form-control" type="text" id="blog-id"  th:field="*{id}">

{在控制器中}

@GetMapping(“/”) public String display(Model model) {

    // Create the object first
    BlogPost blogPost = new BlogPost();

   // Then add assign the value to object
    blogPost.setId( Value You Want To Add );

   // Then send the object that you added the id to as the attribute
    model.addAttribute("blogPost", blogPost);

    return "postBlog";
}

\*\*\* 结论 \*\*\* 我将我的代码缩减为您需要查看的内容(在所有仇恨者开始之前)。这是我的解决方案,它完美无缺。不,我们都知道如何解决问题

干杯! Java埃迪

原文由 JavaEddie 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题