Thymeleaf 关于 th:block 语句

问题描述 投票:0回答:1

我正在尝试使用 th:block 使表格更具体地分析我的数据..

我正在努力

<table>
   <thead>
      <tr>
       <th>something</tr>
       <th>something2</tr>
       <th>something3</tr>
      </tr>
   </thead>
   <tbody>
    <tr>
        <th:block th:if="${not #maps.isEmpty(result)}" th:each="firstEntry : ${result}">
           <th:block th:if="${firstEntryStat.count == 0}">
              <tr>
           </th:block>

           <td th:text="${firstEntry.value}"></td>

           <th:block th:if="${firstEntryStat.count == 0}">
              </tr>
           </th:block>
           
        </th:block>
   </tbody>
</table>

我尝试制作这种表格(在帖子末尾)

但它以错误结束,即

元素类型“th:block”必须由匹配的结束标记终止 “”

所以我尝试了另一种方法,

 <table>
       <thead>
          <tr>
           <th>something</tr>
           <th>something2</tr>
           <th>something3</tr>
          </tr>
       </thead>
       <tbody>
        <tr>
            <th:block th:if="${not #maps.isEmpty(result)}" th:each="firstEntry : ${result}">
             <tr th:if="${firstEntryStat.count == 0}">

               <td th:text="${firstEntry.value}"></td>

             </tr th:if="${firstEntryStat.count == 0}">
               
            </th:block>
       </tbody>
    </table>

但是,它产生了如下错误

元素类型“tr”的结束标记必须以“>”分隔符结尾。

有没有办法制作如上图所示的数据表?

我的地图数据的结构如下

Maps< String , Maps< String, Maps< String, Long>>> result = new HashMap<>();
result = {
  "First": {
    "time": {
      "now": "",
      "past": "",
      "future": ""
    },
    "sleifj": {
      "now": "",
      "past": "",
      "future": ""
    }
  },
  "Second": {
    "time": {
      "now": "",
      "past": "",
      "future": ""
    },
    "sleifj": {
      "now": "",
      "past": "",
      "future": ""
    }
  }
}

====================================================== ================= 附加数据信息 我的地图数据看起来像

First
  - time
        - now : slejflesf
        - past : lsijefleisf
        - future : lsajiefeasf
  - sleifj 
        - now : slejflesf
        - past : lsijefleisf
        - future : lsajiefeasf
Second
  - time
        - now : slejflesf
        - past : lsijefleisf
        - future : lsajiefeasf
  - sleifj 
        - now : slejflesf
        - past : lsijefleisf
        - future : lsajiefeasf




------------------------------------------------------
  Map Name  |  Sub Name  |  Now  |  Past  |  Future  |
------------------------------------------------------
  First     |    time    | asfas | lsefa  | saeflkjle|
            ------------------------------------------
            |    sleifj  | dsff  | sfesf  | sefasefa |
------------------------------------------------------
  Second    |    time    | asfas | lsefa  | saeflkjle|
            ------------------------------------------
            |    sleifj  | dsff  | sfesf  | sefasefa |
------------------------------------------------------
java html thymeleaf
1个回答
0
投票

在您的第一个示例中,当您尝试嵌套 2 个表格行时,您在 2 个

</tr>
标签之间缺少
</th:block>
,这是不可取的。

第二个示例仍然存在相同的问题,但为此我认为您不能在结束标签上使用

th:if

查看您编写的 ASCII 模型,您可能想要做的就是将子图中非第一个项目的第一个

<td>
元素留空。 (参见下面的模拟代码)

<table>
    <thead>
        <tr>
            <th>Map Name</th>
            <th>Sub Name</th>
            <th>Now</th>
            <th>Past</th>
            <th>Future</th>
        </tr>
    </thead>
    <tbody>
        <th:block th:each="mapNameItem : ${result}">
            <tr th:each="subMapItem : ${mapNameItem}">
                <td th:if="subMapItemStat.count == 0" th:text="mapNameItem.key" />
                <td th:if="subMapItemStat.count != 0" />
                
                <td th:text="subMapItem.key" />
                <td th:text="subMapItem.get('now')" />
                <td th:text="subMapItem.get('past')" />
                <td th:text="subMapItem.get('feature')" />
            </tr>
        </th:block>
    </tbody>
</table>

您可能希望将

th:each
上最外面的
th:block
移动到
tbody
,而不是根据您的格式需求。

© www.soinside.com 2019 - 2024. All rights reserved.