bug记录1
Posted z啵唧啵唧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bug记录1相关的知识,希望对你有一定的参考价值。
- 报错提示
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates//site/notice.html]")
Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "commentNotice.unread!=0?commentNotice.unread:''" (template: "/site/notice" - line 85, col 40)
at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)
at org.attoparser.MarkupParser.parse(MarkupParser.java:257)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)
... 52 common frames omitted
问题是模板读取不到unread数据,排查发现是给模板返回数据是逻辑发生错误
//查询评论类通知
Message message = messageService.findLatestNotice(user.getId(), TOPIC_COMMENT);
Map<String, Object> messageVo = new HashMap<>();
if (message != null)
//构造一个voMap
//丰富这个messageVo对象
messageVo.put("message", message);
//处理content字段,因为之前在数据路中的content字段存放的是json对象
String content = HtmlUtils.htmlUnescape(message.getContent());
//将这个字符串转化为正常对象
HashMap<String, Object> data = JSONObject.parseObject(content, HashMap.class);
messageVo.put("user", userService.findUserById((Integer) data.get("userId")));
messageVo.put("entityType", data.get("entityType"));
messageVo.put("entityId", data.get("entityId"));
messageVo.put("postId", data.get("postId"));
int count = messageService.findNoticeCount(user.getId(), TOPIC_COMMENT);
messageVo.put("count", count);
int unread = messageService.findNoticeUnreadCount(user.getId(), TOPIC_COMMENT);
messageVo.put("unread", unread);
model.addAttribute("commentNotice", messageVo);
- 问题分析
应该将messageVo这个Map和向模板返回数据这些逻辑放在if逻辑中构造,因为只有系统有消息的时候我们才需要给模板返回数据,这个错误逻辑,无论是message是否为空都会向模板返回messageVo,但是当message为空的是否向模板返沪的messageVo是一个空map,所以模板会报错找到指定数据 - 处理结果
if (message != null)
//构造一个voMap
Map<String, Object> messageVo = new HashMap<>();
//丰富这个messageVo对象
messageVo.put("message", message);
//处理content字段,因为之前在数据路中的content字段存放的是json对象
String content = HtmlUtils.htmlUnescape(message.getContent());
//将这个字符串转化为正常对象
HashMap<String, Object> data = JSONObject.parseObject(content, HashMap.class);
messageVo.put("user", userService.findUserById((Integer) data.get("userId")));
messageVo.put("entityType", data.get("entityType"));
messageVo.put("entityId", data.get("entityId"));
messageVo.put("postId", data.get("postId"));
int count = messageService.findNoticeCount(user.getId(), TOPIC_COMMENT);
messageVo.put("count", count);
int unread = messageService.findNoticeUnreadCount(user.getId(), TOPIC_COMMENT);
messageVo.put("unread", unread);
model.addAttribute("commentNotice", messageVo);
- 解决成功!!!
以上是关于bug记录1的主要内容,如果未能解决你的问题,请参考以下文章