我有一个简单的文本输入字段,我必须从一个对象设置默认值,并将其最终值保存在另一个。
<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是数据库中实体对象
解决这种情况的正确方法是什么?
不工作的意思是-让我们说,初始值是client.name =“Foo”和form.clientName=null。我需要输入字段显示值是“Foo”和表单提交后form.clientName值成为“Foo”。但输入字段显示什么,并在提交form.clientName值仍然是null;
如果有人感兴趣,请使用以下结构解决此问题(在另一个问题中找到答案)。
th:attr="value = ${client.name}"
6条答案
按热度按时间4uqofj5v1#
你可以采用这种方法。
使用html
id
和name
代替th:field
。使用th:value
设置值希望这对你有帮助
qncylg1j2#
正确的方法是使用预处理
比如说
th:field="*{__${myVar}__}"
uttx8gqw3#
如果您不必返回页面并保留表单的值,则可以这样做:
这是某种魔法:
如果你很在意保持表单的输入值,比如在页面上出现用户输入错误,那么你必须这样做:
这意味着:
而不必将客户端beanMap到表单bean。它之所以有效,是因为一旦提交了表单,值就不是null而是“”(空)
vd8tlhqk4#
好吧,如果我理解正确的问题,你是试图分配一个预定义的值给一个变量,然后填充该变量到html表单,当它是由Thymeleaf呈现.如果这是你所问的,我一直在挣扎,以及几天,刚刚找到答案后,阅读您的帖子,并认为我会分享.
我所做的(希望这能帮助一些人)是试图自动为我的blog帖子的id赋值,这样当用户提交它时,blog帖子将自动获得我想要赋值的ID。
***我遇到的问题**当我像这样{ th:field="{id}”}分配id变量时,表单输入框中的输出总是“0”。所以我尝试了各种不同的方法来解决这个问题,比如添加一个th:value和一个th:name,结果总是大的“0”。
所以,经过大量的敲打我的头,并通过论坛搜索来短,我发现这个小金块的喜悦。
https://frontbackend.com/thymeleaf/hidden-inputs-in-thymeleaf
虽然它没有解决我的具体问题,但答案就在里面。我不会让你自己读,因为我讨厌这样。
*答案
{In HTML表单}
{In控制器}
@GetMapping(“/”)公共字符串显示(Model模型){
***结论***我把代码精简到你需要看到的程度(在所有的仇恨者开始之前)。这就是我的解决方案,它完美地工作了。不,我们都知道如何解决这个问题
干杯! java 埃迪
xggvc2p65#
所以你需要做的就是用th:name替换th:field,然后加上th:value,th:value将得到你传递的变量的值。
k4ymrczo6#
有两种可能的解决方案:
1)您可以通过javascript在视图中设置它...(不推荐)
2)或者更好的解决方案是在模型中设置值,您可以通过控制器在GET操作中将其附加到视图中。您也可以在控制器中更改值,只需从$client.name创建一个Java对象并调用setClientName即可。
希望能帮上忙。