2

DTO でマップを作成し、
Map<String, Map<Integer,String>> 以下のように 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 に答える