美文网首页程序员Java学习笔记
Thymeleaf模版遍历JSON对象

Thymeleaf模版遍历JSON对象

作者: 朱端的一坨 | 来源:发表于2016-07-01 15:04 被阅读9877次

背景

Thymeleaf模版很多地方确实很方便,但是在处理JSON对象时遇到了一些问题,就觉得很有意思记录一下,以供自己备忘,同时给有类似需求的同学参考一下,希望大家都能尽快解决问题,早点下班,回家遛狗~
在说正题之前,可能大家有个问题,其实Thymeleaf本身提供了一个map进行映射,还支持直接传class进行解析,那么为啥还要用JSON。其实我仔细想了一下,确实也没有一定要用JSON的必要,我就是 这么贱啊,JSON多方便,我偏要~(好吧,打人就算了,请勿打脸,大雾 但是从中我们可以进一步感受Thymeleaf具体处理起来的一些有意思的方式。

具体处理

其实使用Thymeleaf最本质的地方在于对其自身的在理解,它是一个基于java的解析工具,主要还是在服务端本身进行了内容的替换,因此还是比较类似jsp的处理,而非一个真正意义的前端工具,它所有可以使用的函数都是基于java本身的。
因此对于JSON的遍历,其实也就是和java中对json的遍历一致,具体处理如下所示:

<table class="am-table am-table-bd am-table-bdrs am-table-striped am-table-hover">                      
  <tbody th:remove="all-but-first"> 
    <tr th:each="ea : ${eaJson.keySet()}">
      <td class="am-text-center">*</td>
      <td th:text="${ea}">1234567</td>
      <td th:switch="${eaJson.getInt(ea)}">
        <span th:case="-1" class="am-text-danger">未开通</span>
        <span th:case="0">默认</span>     
        <span th:case="1" class="am-text-secondary">正常</span>                                           
      </td>
    </tr>   
  </tbody>
</table>

同理,我们可以列举其它很多类似的功能,主要能在java中使用即可在模版中正确得到处理,如我们可以对spring boot中最常用的Page对象进行如此操作:

<tr th:each="ResourceComsumeUser : ${resourceComsumeUser.getContent()}" th:id="${ResourceComsumeUser.getUserID()}">
  <td th:text="${ResourceComsumeUser.getID()}">1</td>
  <td th:text="${ResourceComsumeUser.getUsedTimes()}"><a href="#">Business management</a></td>
  <td th:text="${ResourceComsumeUser.getText()}">31</td>
  <td th:text="${ResourceComsumeUser.getTime()}/1000">json</td>
</tr> 

题外话

虽然Thymeleaf模版本身十分方便,特别是其严格的xml检测,让很多html标签不完整的地方能够得到检测,比如<input name="xx" type="hidden">这样一般在html可行的是通过不了的,一定要完整匹配为<input name="xx" type="hidden" />(强迫症表示:一本满足)。但是其对页面嵌入的js脚本转义符号的支持却不是很好,主要表现为:

<script type="text/javascript">     
  $(document).ready(function(){     
    var content = "<button onclick=\"hello()\" />";                 
  });       
</script>

类似这种的"转义会报错,当然解决方案也很简单,换成'号或者直接做成js脚本引入就可以了,只是有时候没有那么爽的感觉(好吧,奇怪的强迫症)

相关文章

网友评论

    本文标题:Thymeleaf模版遍历JSON对象

    本文链接:https://www.haomeiwen.com/subject/puifjttx.html