2


Map<String, Map<Integer,String>> 在 DTO 中创建了一个地图,并使用 thymeleaf 在 html 中访问它,如下所示:

<div class="popupui" th:each="lang,st : ${session.languages}" >                        
< label th:text="#{'language.label.' + ${lang.languageName} }" >English  < /label>
<input type="text"
    th:field="*{languageMap['answerAlternative'][${st.count}]}"
    th:id="'name-' + ${lang.languageId}" class="languageId"/><a
    th:class="'flag-' + ${lang.languageName}" href="#"></a>
</div>

一个 processingException 即将到来th:field="*{languageMap['answerAlternative'][${st.count}]}"

我还用以下方法测试了上述 th:field:

<input type="text" 
 th:field="*{languageMap[ __${'answerAlternative'}__][__${st.count}__]}"/>
4

1 回答 1

3

根据 Thymeleaf 文档,

变量表达式不仅可以写成 ${...} 表达式,还可以写成 *{...} 表达式。

但是有一个重要的区别:星号语法评估选定对象上的表达式,而不是整个上下文变量映射。

您是否可能错过了th:object="yourDTO"作为相关“popupui”div 的父级的 div 上的选择,以便您可以使用*{...}

此外,如果您打算显示“语言地图”中的值,您不应该使用

th:value="*{languageMap['answerAlternative'][st.count]}"

无论如何,如果您有上面的选择,那么下面应该可以工作

th:field="*{languageMap['answerAlternative'][st.count]}"

百里香参考:

4.3 选择表达式(星号语法)

于 2013-09-25T20:48:55.760 回答