【发布时间】:2018-03-25 03:00:51
【问题描述】:
当数据最初是从控制器层传入时,我发现很难从网页中检索数据。
我正在使用 Thymeleaf 3 和 Spring boot v1。我有一个将对象传递给模板的 webMVC 控制器。该对象看起来像这样(伪代码):
public class Person{
// Nested object retrieved from various data sources
// and passed to the UI
private Address address;
private Job job;
// Form values I want to retrieve from UI
private String formValue1;
private String formValue2;
// getters/setters
}
我的 html 页面分为两个部分。一个部分显示大部分 Person 值,而另一部分包含一个基本表单。提交表单时,我希望将表单值加上所有原始值返回到服务器。
我发现 Thymeleaf 似乎只会检索表单中的值,这意味着我必须将表单拉伸到页面的两个部分,即使用户只会填写表单的一个部分页。所以现在html看起来如下:
<html>
<!--header/body/etc -->
<form th:object="${person}" th:action="@{/person/id}" method="post">
<!-- Form Inputs -->
<input type="text" th:field="${person.formValue1}"/>
<input type="text" th:field="${person.formValue2}"/>
<!-- Values not used in form, but included so they will be sent back
to server -->
<input type="text" th:field="${person.address.city}" readonly="readonly"/>
<input type="text" th:field="${person.address.street}"
readonly="readonly"/>
<input type="text" th:field="${person.job.title}" readonly="readonly"/>
</form>
</html>
此外,Thymeleaf 似乎只能检索具有属性th:field 的值,但th:field 只能分配给<input/> 元素(据我所知),所以我拥有的任何长文本都会被截断输入字段的正常长度,这是相当有限的。
所以我想知道是否有人可以帮助解决以下问题:
- Thymeleaf 能否返回不在表单内的值(但在提交表单时返回)
-
th:field是我可以用来发回数据的唯一选项吗? (我已经用th:text成功显示了数据,但发回任何东西都没有运气)。
谢谢。
【问题讨论】:
-
只是为了确定,有两种形式的问题,是关于你的对象没有被所有值填充的问题吗?
-
只有一个表单,但它包含表单不需要的值。它们被包含在内,因此它们将被发送回服务器。我已经更新了 html 示例
标签: html spring forms spring-boot thymeleaf