我是Springboot的初学者,因此决定在购物车上工作。似乎找不到org.springframework.expression.spel.SpelEvaluationException的根:EL1007E:在null上找不到属性或字段“名称”。嵌套的异常是org.thymeleaf.exceptions.TemplateProcessingException:评估SpringEL表达式的异常:“#request.userPrincipal.name”(模板:“ / _ header”-第11行,列48),其根本原因是
我已经尝试检查相关对象是否为空
if (userDetails != null){
model.addAttribute("userDetails", userDetails);
}
通过使用“导入org.springframework.security.core.userdetails.UserDetails;”的方式抽象用户类
特定的HTML代码:
<div class="header-bar">
<th:block sec:authorize="isAuthenticated()">
Hello
<a th:href="@{/admin/accountInfo}"
th:utext="${#request.userPrincipal.name}">..</a>
|
<a th:href="@{/admin/logout}">Logout</a>
</th:block>
<th:block sec:authorize="!isAuthenticated()">
<a th:href="@{/admin/login}">Login</a>
</th:block>
</div>
我的控制器代码:
@RequestMapping(value = { "/admin/accountInfo" }, method = RequestMethod.GET)
public String accountInfo(Model model) {
UserDetails userDetails = (UserDetails)
SecurityContextHolder.getContext().getAuthentication().getPrincipal();
System.out.println(userDetails.getPassword());
System.out.println(userDetails.getUsername());
System.out.println(userDetails.isEnabled());
model.addAttribute("userDetails", userDetails);
return "accountInfo";
}
答案 0 :(得分:0)
似乎request.userPrincipal.name
为空。仔细检查请求对象。您在哪里创建它?
答案 1 :(得分:0)
再次检查属性。 property="principal.username"
。原则具有属性username
参考:See this tutorial for reference