Thymeleaf 动态创建表单输入值
Thymeleaf dynamic created form input value
我有动态生成的表单,但我也想将值放入其中 - 这是一种用户可以在解析文本之前编辑和接受的表单。所以我在做
th:value="${event.value.eventDescription}"
而且我只得到表示对象的字符串,如
com.myPackage.model.ConferenceEvent@4a78868b
而不是这个对象内部的真实描述。
表格:
<form action="#" th:action="@{/approveEvents}" th:object="${conferenceTimetable}" method="post">
<table>
<tr>
<td><label>Key</label></td>
<td><label>EventDate</label></td>
<td><label>EventDescription</label></td>
</tr>
<tr th:each="event: *{conferenceTimetableMap}">
<td><span th:utext="${event.key}">Description</span></td>
<td><span th:utext="${event.value.eventDate}">Description</span></td>
<td><input type="text" th:field="*{conferenceTimetableMap[__${event.key}__]}" th:value="${event.value.eventDescription}"/></td>
</tr>
<tr>
<td>
<input type="submit" value="Submit"/>
</td>
</tr>
</table>
</form>
th:field
写入输入的 name
、value
和 id
。所以 *{conferenceTimetableMap[__${event.key}__]}
是计算结果为 com.myPackage.model.ConferenceEvent@4a78868b
而不是 ${event.value.eventDescription}
(从未使用过)的表达式。
相反,您应该在 th:field
中写入您提交的变量的完整路径。在不知道 conferenceTimetableMap 包含什么的情况下我无法确定,但像这样的东西可能会起作用:
<input type="text" th:field="*{conferenceTimetableMap[__${event.key}__].eventDescription}" />
我有动态生成的表单,但我也想将值放入其中 - 这是一种用户可以在解析文本之前编辑和接受的表单。所以我在做
th:value="${event.value.eventDescription}"
而且我只得到表示对象的字符串,如
com.myPackage.model.ConferenceEvent@4a78868b
而不是这个对象内部的真实描述。
表格:
<form action="#" th:action="@{/approveEvents}" th:object="${conferenceTimetable}" method="post">
<table>
<tr>
<td><label>Key</label></td>
<td><label>EventDate</label></td>
<td><label>EventDescription</label></td>
</tr>
<tr th:each="event: *{conferenceTimetableMap}">
<td><span th:utext="${event.key}">Description</span></td>
<td><span th:utext="${event.value.eventDate}">Description</span></td>
<td><input type="text" th:field="*{conferenceTimetableMap[__${event.key}__]}" th:value="${event.value.eventDescription}"/></td>
</tr>
<tr>
<td>
<input type="submit" value="Submit"/>
</td>
</tr>
</table>
</form>
th:field
写入输入的 name
、value
和 id
。所以 *{conferenceTimetableMap[__${event.key}__]}
是计算结果为 com.myPackage.model.ConferenceEvent@4a78868b
而不是 ${event.value.eventDescription}
(从未使用过)的表达式。
相反,您应该在 th:field
中写入您提交的变量的完整路径。在不知道 conferenceTimetableMap 包含什么的情况下我无法确定,但像这样的东西可能会起作用:
<input type="text" th:field="*{conferenceTimetableMap[__${event.key}__].eventDescription}" />