Springboot /百里香叶异常

时间:2019-04-15 12:32:22

标签: java spring-boot thymeleaf

我是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>
         &nbsp;|&nbsp;
      <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";
 }

2 个答案:

答案 0 :(得分:0)

似乎request.userPrincipal.name为空。仔细检查请求对象。您在哪里创建它?

答案 1 :(得分:0)

再次检查属性。 property="principal.username"。原则具有属性username 参考:See this tutorial for reference