我创建了一张地图
Map<String, Map<Integer,String>>
在DTO中使用百万富翁在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>
来自th:field="*{languageMap['answerAlternative'][${st.count}]}"
我还测试了上面的字段:
<input type="text"
th:field="*{languageMap[ __${'answerAlternative'}__][__${st.count}__]}"/>
答案 0 :(得分:3)
根据Thymeleaf文档,
变量表达式不仅可以用$ {...}表达式编写,还可以用* {...}表达式编写。
但是有一个重要的区别:星号语法评估所选对象上的表达式,而不是整个上下文变量映射。
您是否错过了div上的选择th:object="yourDTO"
,该div是您所使用的“popupui”div的父级,以便您能够使用*{...}
此外,如果您打算显示“语言地图”中的值,您不应该使用
th:value="*{languageMap['answerAlternative'][st.count]}"
在任何情况下,如果你有如上所述的选择,那么下面应该有效
th:field="*{languageMap['answerAlternative'][st.count]}"
Thymeleaf参考: