Попытка вызова метода isAdmin () для нулевого объекта контекста - PullRequest
0 голосов
/ 29 августа 2018

Здравствуйте, у меня проблема, которую я не могу решить, и я хотел бы попросить о помощи, вот ошибка

org.attoparser.ParseException: исключение, оценивающее выражение SpringEL: "user.isAdmin () ИЛИ user.isAuthor (article)" (шаблон: "article / details" - строка 16, столбец 73)

org.springframework.expression.spel.SpelEvaluationException: EL1011E: Вызов метода: попытка вызова метода isAdmin () для нулевого объекта контекста

Сущность User.java

    @Transient
    public boolean isAdmin(){
        return this.getRoles()
                .stream()
                .anyMatch(role -> role.getName().equals("ROLE_ADMIN"));
    }

    @Transient
    public boolean isAuthor(Article article) {
        return Objects.equals(this.getId(),
                article.getAuthor().getId());
    }

HTML-файл, в котором он содержит ошибки

       <th:block sec:authorize="isAuthenticated()" th:if="${user.isAdmin() OR user.isAuthor(article)}">
       <a class="btn btn-success btn-xs" th:href="@{/article/edit/{id}(id = ${article.id})}">Edit</a>
       <a class="btn btn-danger btn-xs" th:href="@{/article/delete/{id}(id = ${article.id})}">Delete</a>
       </th:block>

вот мой контроллер для деталей статьи

@GetMapping("/article/{id}")
    public String details(Model model, @PathVariable Integer id){

        if(!this.articleRepository.existsById(id)){
            return "redirect:/";
        }

        if(!(SecurityContextHolder.getContext().getAuthentication()
                instanceof AnonymousAuthenticationToken)){
            UserDetails principal = (UserDetails) SecurityContextHolder.getContext()
                    .getAuthentication().getPrincipal();
            User entityUser = this.userRepository.findByEmail(principal.getUsername());

            model.addAttribute("user", entityUser);
        }

        Article article = this.articleRepository.getOne(id);

        model.addAttribute("article", article);
        model.addAttribute("view", "article/details");


        return "base-layout";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...