SpringBoot学习笔记(四):整合thymeleaf遇到的问题

  • 问题3:
    • 描述:关于Property or field cannot be found on object of type “java.util.HashMap” ,may not be public的问题;比如我在前台接收到后台传来的一个Map对象test:{“a”,”1”},此时我在前台获取test.b,
      <p th:text="${test.b}?:'(b not exists)'"></p>
      就会报上面的错误;按理说我这里进行了判断是否为空的操作,应该不会发生这样的错误啊;
    • 原因:是因为后台传来的是HashMap对象,而不是一个实体对象,所以要用${test[‘pro’]}这样的方式来获取比较安全;
    • 解决办法:有一个暂时的解决办法,就是用test[‘b’]这样的方式来获取属性就可以了;也可以先用 ${#maps.contains(test,'b')}进行判断该key是否存在,然后再用${test.b}获取
<p th:text="${test['b']}?:'(b not exists)'"></p>
  • 问题1
    • 描述(版本问题):spring-boot项目整合thymeleaf后,pom文件中的spring-boot-starter-thymeleaf中已经包含了thymeleaf,但是版本是2.0的,现在需要升级到3.0;
    • 解决办法:在pom.xml的properties中添加thymeleaf的版本号
<properties>
        <java.version>1.8</java.version>
        <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
        <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
    </properties>
  • 问题2
    • 描述(引入片段问题):关于th:replace,现有head.hmtl和home.html;然后在home.html中引入head.html中的head;结果head.html中的header也显示在界面中;如果home.html中引入了head.html中的header,home.html界面就会显示两个header;
    • 原因:是因为head.html中th:fragment=”header”,跟header标签名字重复了,导致home.html中引入的时候,把th:fragment=”header”片段和header标签的内容都引入了
    • 解决办法:修改片段名称即可,th:fragment=”header_fragment”

你可能感兴趣的:(SpringBoot学习笔记(四):整合thymeleaf遇到的问题)