我要创建一个页面,其中显示有关当前登录用户的详细信息并进行编辑。但是当我想要显示详细信息时,我得到了错误:
link
userDetails.html
org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'username' cannot be found on null
我尝试更改为:
<span th:text="${oneUser.username}"> username: </span>
<span th:text="${oneUser.password}"> password: </span>
<span th:text="${oneUser.email}"> email: </span>
但是我只有一个页面,没有任何显示,没有任何错误
UserController.java
<span th:text="${oneUser == null ? ' ' : oneUser.username}"> username: </span>
UserRepository.java
@GetMapping("/registerUser")
public String home(Model model) {
model.addAttribute("userNew", new User());
return "registerUser";
}
@GetMapping("/userDetails")
public String show(@ModelAttribute User details, Model modelDetals) {
final String currentUserName = SecurityContextHolder.getContext().getAuthentication().getName();
details = userRepository.findByUsername(currentUserName);
modelDetals.addAttribute("oneUser", details);
return "userDetails";
}
User.java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByEmail(String email);
User findByUsername(String username);
}
第二个问题是:如何对此细节进行操作。我的意思是例如我有第二页来编辑细节。如何使用UserRepository.java获取当前登录的用户并更改此详细信息,以用新的详细信息保存用户,而不是像在这种情况下那样通过用户名获取?