Thymeleaf动态创建表单输入值

时间:2018-01-30 14:33:38

标签: forms thymeleaf input-field

我已经获得了动态生成字段的表单,但我也希望将值放入其中 - 它是一种用户可以在解析文本之前编辑和接受的表单。所以我正在做

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>

1 个答案:

答案 0 :(得分:0)

th:field会写入其输入的namevalueid。因此,*{conferenceTimetableMap[__${event.key}__]}是评估为com.myPackage.model.ConferenceEvent@4a78868b而非${event.value.eventDescription}的表达式(从未使用过)。

相反,您应该在th:field中写下您要提交的变量的完整路径。我无法确定不知道conferenceTimetableMap包含什么,但是这样的事情可能有用:

<input type="text" th:field="*{conferenceTimetableMap[__${event.key}__].eventDescription}" />