我已经获得了动态生成字段的表单,但我也希望将值放入其中 - 它是一种用户可以在解析文本之前编辑和接受的表单。所以我正在做
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>
答案 0 :(得分:0)
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}" />