我使用所有共享抽象基类的表单支持对象。此基类的一个属性名为model
,但它可以表示我的域模型的任何实体。
现在我想要做的是使用th:with
将model
属性重命名为我的实体名称,即curriculum
,advertisement
等。使用advertisement
而不是model
,我的不同Thymeleaf模板会更好看。
以下是我的尝试:
<form th:object="${advertisementForm}" th:with="advertisement=*{model}" th:action="@{${postUrl}}" method="post" class="form-horizontal">
(model
是advertisementForm
)
然后我尝试访问我新创建的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
表示未使用局部变量。
答案 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