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的主要内容,如果未能解决你的问题,请参考以下文章

Unity开发bug记录100例子(第1例)——打包后shader失效或者bug

连连看bug记录

日常bug及解决方法记录

YOLOv5 BUG修复记录

YOLOv5 BUG修复记录

Unity开发bug记录100例子(第1例)——打包后shader失效或者bug