Здравствуйте, у меня проблема, которую я не могу решить, и я хотел бы попросить о помощи, вот ошибка
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";
}