如何在百里香中使用嵌套地图?

时间:2013-09-24 21:57:24

标签: hashmap thymeleaf

我创建了一张地图
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}]}"

的processingException

我还测试了上面的字段:

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

1 个答案:

答案 0 :(得分:3)

根据Thymeleaf文档,

  

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

     

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

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

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

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

在任何情况下,如果你有如上所述的选择,那么下面应该有效

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

Thymeleaf参考:

4.3 Expressions on selections (asterisk syntax)