使用th的正确方法:在表单中使用Thymeleaf局部变量

时间:2014-11-10 15:47:35

标签: spring-mvc thymeleaf

我使用所有共享抽象基类的表单支持对象。此基类的一个属性名为model,但它可以表示我的域模型的任何实体。

现在我想要做的是使用th:withmodel属性重命名为我的实体名称,即curriculumadvertisement等。使用advertisement而不是model,我的不同Thymeleaf模板会更好看。

以下是我的尝试:

<form th:object="${advertisementForm}" th:with="advertisement=*{model}" th:action="@{${postUrl}}" method="post" class="form-horizontal">

modeladvertisementForm

的属性

然后我尝试访问我新创建的advertisement变量,如下所示:

<input type="hidden" th:field="${advertisement.id}"/>

我得到了:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'advertisement' available as request attribute

表示未使用局部变量。

1 个答案:

答案 0 :(得分:0)

使用th:with很好但是对于:field不正确

可能的方式:使用字段

th:field="*{model.id}" -- here * can be read as a direct replacement of the form object defined    with th:object

th:field="${advertisementForm.model.id}" --- if you are $ you need to define the complete path

可能的解决方案 而不是使用th:field使用html id&amp;名称。使用th:value

设置值
<input class="form-control"
           type="text"
           th:value="${client.name}" id="clientName" name="clientName" />

但我不强烈建议不这样做,因为这里提到的 http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#inputs