当前位置: 首页 > 工具软件 > ying-template > 使用案例 >

SpringBoot+thymeleaf出现[THYMELEAF][http-nio-8080-exec-1] An error happened during template parsing

汪阳飇
2023-12-01

就离了大谱,一直出现这个错误,找了半天错误,就是没有想到最简单的拼写错误。就是说,有错了咱一定要仔细看报错信息,ok?

以下是我的报错内容

2022-06-13 15:22:24.903 ERROR 111252 --- [nio-8080-exec-1] org.thymeleaf.TemplateEngine             : [THYMELEAF][http-nio-8080-exec-1] Exception processing template "index": An error happened during template parsing (template: "class path resource [templates/index.html]")

在这个位置继续向下看!!!有很明显的caused by,此处的是导致出现以上错误的原因。我的原因如下:

Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "#dates.format(map.post.createTime,'yyyy-MM-dd HH:mm:ss')" (template: "index" - line 132, col 68)
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "#dates.format(map.post.createTime,'yyyy-MM-dd HH:mm:ss')" (template: "index" - line 132, col 68)
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'createTime' cannot be found on object of type 'com.nowcoder.community.entity.DiscussPost' - maybe not public or not valid?

这个错误的意思是 “createTime” 这个属性找不到(要么是你没有这个属性值,要么是你这此处拼写错误)
出现以上的错误呢,首先去相对应的html文件中找到报错的位置,然后找到对应的javaBean,查看拼写是否写错。修改成正确属性名,重新编译 错误消失。

我的controller层:

@RequestMapping(path = "/index",method = RequestMethod.GET)
    public String getIndexPage(Model model){
       List<DiscussPost> list =  discussPostService.findDiscussPosts(0,0,10);
        List<Map<String,Object>> discussPosts  = new ArrayList<>();
        if (list!=null){
            for (DiscussPost post:list){
                Map<String,Object> map = new HashMap<>();
                map.put("post",post);
                User user = userService.findUserId(post.getUserId());
                map.put("user",user);
                discussPosts.add(map);
            }
        }
        model.addAttribute("discussPosts",discussPosts);
        return "index";
    }

我的index.html部分内容

<!-- 帖子列表 -->
				<ul class="list-unstyled">
					<li class="media pb-3 pt-3 mb-3 border-bottom" th:each="map:${discussPosts}">
							<a href="site/profile.html">
								<img th:src="${map.user.headerUrl}" class="mr-4 rounded-circle" alt="用户头像" style="width:50px;height:50px;">
							</a>
						<div class="media-body">
							<h6 class="mt-0 mb-3">
								<a href="#"  th:utext="${map.post.title}">备战春招,面试刷题跟他复习,一个月全搞定!</a>
								<span class="badge badge-secondary bg-primary" th:if="${map.post.type==1}">置顶</span>
								<span class="badge badge-secondary bg-danger" th:if="${map.post.status==1}">精华</span>
							</h6>
							<div class="text-muted font-size-12">
								<u class="mr-3" th:utext="${map.user.name}">寒江雪</u> 发布于 <b th:text="${#dates.format(map.post.createTime,'yyyy-MM-dd HH:mm:ss')}">2019-04-15 15:32:18</b>
								<ul class="d-inline float-right">
									<li class="d-inline ml-2">赞 11</li>
									<li class="d-inline ml-2">|</li>
									<li class="d-inline ml-2">回帖 7</li>
								</ul>
							</div>
						</div>						
					</li>
				</ul>

报错的地方时 map.post.createTime 中createTime不可用,然后我找到对应post类,即DiscussPost,其属性定义如下

   private Date creatTime;

两者不一致,修改一致后重新运行,错误消失,成功呈现效果页面。

注意:
假如不是拼写错误,再去尝试其他的解决办法,可参考此博客

 类似资料: