Это способ объявить generi c Map с @thymesVar в Idea для включения функций завершения кода?
Когда-то был похожий вопрос об обработке коллекций: Как мне обрабатывать коллекции с @thymesVar?
Но то, что работает для списков, не очень хорошо работает для карт: (
шаблон :
<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns:th="http://www.thymeleaf.org">
<!--/*@thymesVar id="#mylist" type="java.util.List<java.lang.String>"*/-->
<item th:at = "${#mylist.get(1).toLowerCase()}"/> <!--works-->
<item th:at = "${#mylist[1].toLowerCase()}"/> <!--works-->
<!--/*@thymesVar id="#mymap" type="java.util.Map<java.lang.String, java.util.String>"*/-->
<item th:at = "${#mymap.get('item').toLowerCase()}"/> <!--Don't work-->
<item th:at = "${#mymap['item'].toLowerCase()}"/> <!--Don't work-->
<!--/*@thymesVar id="test" type="ru.my.test.TestClass"*/-->
<item th:at = "${test.map['item'].get('item').toLowerCase()}"/> <!--WORKS!-->
<item th:at = "${test.map['item'].toLowerCase()}"/> <!--Don't work-->
<item th:at = "${test.mapGetter()['item'].toLowerCase()}"/> <!--Don't work-->
<item th:at = "${test.mapGetter().get('item').toLowerCase()}"/> <!--WORKS!-->
</root>
java:
package ru.my.test;
import java.util.HashMap;
import java.util.Map;
public class TestClass {
public Map<String, String> map = new HashMap<>();
public Map<String, String> mapGetter() {
return null;
}
}
Наиболее запутанным является то, что метод .get (key) работает правильно, когда он используется на карте, доступ к которой осуществляется через другой объект , но не работает, если карта объявлена напрямую.
PS map ['key'] - это сахар OGNL для получения значения по ключу, который отлично поддерживается Thymeleaf