引起:org.springframework.expression.spel.SpelEvaluationException:EL1007E:在null上找不到属性或字段'XXX'

时间:2018-06-15 18:15:12

标签: spring-boot thymeleaf

我只在IDE的控制台中收到错误,网页看起来很棒。 我尝试使用th:if如果寻找null,但是没有摆脱这个问题。 并且标题永远不会为空,所以我不知道为什么我收到错误,再次只在控制台,网页,包括标题显示正常。 这是我在这个网站上的第一个问题,我一直在这里查看代码并找到很多很棒的答案,我想为什么不试着寻求帮助。我花了这么多时间在这个上面,似乎找不到其他人有同样的问题。

没有足够的空间来粘贴整个堆栈跟踪。但也会收到这个错误原因:

引起:org.thymeleaf.exceptions.TemplateProcessingException:评估SpringEL表达式的异常:“post.title”(模板:“post / view” - 第19行,第17行)

!DOCTYPE html>
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head th:replace="main :: head"></head>



<!--<html lang="en"-->
<!--html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:layout:decorate="layouts/main.html">-->

<div th:replace="main :: main">&nbsp;</div>
<body>


    <article style="padding:20px">
        <header>
             <h2 th:text="${post.title}">title</h2>
             <p th:text="${#calendars.format(post.postedOn,'M/dd/yyyy hh:mm a')}">postedOn</p>
        </header>
        <section th:utext="${post.body}">
            body
        </section>
        <footer>
            <address>
                Posted By <a th:href="|mailto:${post.author.email}|"> <span th:text="|${post.author.firstName} ${post.author.lastName}|">author</span></a>
            </address>
        </footer>
        <hr/>
    </article>

</div>
    <div th:replace="main :: bottom">&nbsp;</div>

</body>
</html>

@Controller
@RequestMapping("/posts")
public class PostController {
    private static final Logger logger =   LoggerFactory.getLogger(PostController.class);

    private PostService postService;

    @Autowired
    public PostController(PostService postService){
        this.postService = postService;
    }

    @RequestMapping("/list")
    public String listPosts(Model model){
        model.addAttribute("posts", postService.list());
        return "post/list";
    }
    @RequestMapping("/view/{slug}")
    public String view(@PathVariable(value="slug") String slug, Model model) {
        model.addAttribute("post", postService.getBySlug(slug));
        return "post/view";
    }

    @RequestMapping("/byAuthor/{id}")
    public String byAuthor(@PathVariable(value="id") Long id, Model model) {
        model.addAttribute("posts", postService.listByAuthor(id));
        return "post/list";
    }


}

1 个答案:

答案 0 :(得分:0)

问题似乎与此声明有关:此声明适用于我的所有其他HTML,而不会导致问题。这个html中的其他替换语句工作正常,它就是这个。我将head部分中的代码直接复制到此html文件中,而不是使用替换,它解决了问题。我不知道为什么。 -