可以避免有关Thymeleaf模板的这些IntelliJ警告吗?

时间:2019-02-05 00:51:39

标签: java intellij-idea thymeleaf

我有一个简单的Thymeleaf模板,可以产生所需的输出。但是,IntelliJ对模板的分析报告了两个严格不正确的警告(尽管我可以理解为什么会生成警告)。我想知道是否可以通过以不同的方式构造模板或向IntelliJ提供一些提示来防止警告。

这是模板中的相关代码段。本质上,我正在遍历根据group属性进行分组的对象列表。对于每个组,我希望在该组中的对象之前插入标题和无序列表标签,然后再添加结束标签。开头和结尾标签未明确绑在一起的事实导致出现两个警告(由代码中的注释(1)和(2)指示)。

<!--/*@thymesVar id="issues" type="java.util.List<com.example.Issue>"*/-->
<th:block th:each="issue,i : ${issues}">
  <th:block th:if="${i.first || !issue.uniqueName.equals(issues.get(i.index - 1).uniqueName)}">
    <h3 th:text="${issue.group.name}"></h3>
    <ul> <!-- (1) Element ul is not closed -->
  </th:block>
  <li class="warning" th:text="${issue.name + ': ' + issue.message}"></li>
  <th:block th:if="${i.last || !issue.uniqueName.equals(issues.get(i.index + 1).uniqueName)}">
    </ul>  <!-- (2) Closing tag matches nothing -->
  </th:block>
</th:block>

以下是一些示例输出,可以清楚地表明所生成的HTML确实是正确的,即。 ul标签已正确打开和关闭。

<h3>Group 1</h3>
<ul>
   <li class="warning">Sample 1: message 1</li>
   <li class="warning">Sample 2: message 2</li>
</ul>
<h3>Group 2</h3>
<ul>
   <li class="warning">Lorem ipsum: dolor sit amet</li>
   <li class="warning">Lorem ipsum: dolor sit amet</li>
</ul>

那么有什么方法可以避免这些IntelliJ警告:元素未关闭且结束标记不匹配?

1 个答案:

答案 0 :(得分:0)

当前,IntellijIDEA允许将th:block添加到其自定义HTML标签列表中。这只是部分令人满意,因为如果在Thymeleaf之外使用它,则不会将其标记为错误。

当然,这是一个特例,但是我遇到了很多特例,因为一个域可能使用Thymeleaf,另一个是Freemarker,然后还有一些讨厌的Twig模板供某些PHP项目使用。这会增加我不习惯使用错误语法的风险。 ?