Как мне обработать завершение кода карт Thymelaf generi c в Idea с @thymesVar - PullRequest
0 голосов
/ 27 апреля 2020

Это способ объявить generi c Map с @thymesVar в Idea для включения функций завершения кода?

Когда-то был похожий вопрос об обработке коллекций: Как мне обрабатывать коллекции с @thymesVar?

Но то, что работает для списков, не очень хорошо работает для карт: (

image

шаблон :

<?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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...