Не обрабатывайте каждый случай, если в тимелисе есть значение true - PullRequest
2 голосов
/ 06 апреля 2020

Я работаю над приложением весенней загрузки. У меня есть следующий блок чабреца:

<Produkt th:if="${visibility}" th:each="user: ${userList.myList}">
    <Name th:text="${user.name}"/>
</Produkt>

У меня есть следующий java код:

@Test
public void myTest() {
    Context context = new Context();
    Map<String, List<Map<String, String>>> userValuesList = new HashMap<>();
    boolean visibility = getVisibility();
    if (visibility) {
        List<Map<String, String>> vv = new ArrayList<>();
        Map<String, String> map = new HashMap<>();
        map.put("name", "filip");
        vv.add(map);
        Map<String, String> map2 = new HashMap<>();
        map2.put("name", "test");
        vv.add(map2);
        userValuesList.put("myList", vv);
    }
    context.setVariable("visibility", visibility);
    context.setVariable("userList", userValuesList);
    springTemplateEngine.process("test.xml", context);
}

Поскольку я добавляю этот myList только тогда, когда видимость истинна, я получаю следующая ошибка:

Исключительная ситуация при вычислении выражения SpringEL: "userList.myList"

Мой вопрос заключается в том, что этот userList.myList может быть обработан springTemplateEngine, только если visibility is true?

Конечный результат, которого я хочу достичь:

<Produkt>
    <Name>filip</Name>
</Produkt>

<Produkt>
    <Name>test</Name>
</Produkt>

, а в случае, если видимость ложна, весь этот тег Produkt пропадет.

1 Ответ

1 голос
/ 07 апреля 2020
Атрибут

Thymeleaf th:each имеет более высокий приоритет , чем th:if атрибут. Все атрибуты Thymeleaf определяют числовой приоритет c, который устанавливает порядок их выполнения в теге. Для достижения ваших требований просто используйте атрибут th:if в своем собственном теге, который будет контейнером для тега с атрибутом th:each ...

<div th:if="${visibility}">
    <Produkt th:each="user: ${userList.myList}">
        <Name th:text="${user.name}"/>
    </Produkt>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...