Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring和eleaf会话属性_Java_Spring_Thymeleaf - Fatal编程技术网

Java Spring和eleaf会话属性

Java Spring和eleaf会话属性,java,spring,thymeleaf,Java,Spring,Thymeleaf,我正在创建我的第一个Spring博客,并试图在navbar中设置登录用户的全名。不幸的是,sec:authentication=“name”给了我用户电子邮件,${user.fullname)没有呈现任何内容 @GetMapping("/") public String index(Model model) { List<Article> articles = this.articleRepository.findAll(); Object currentUser

我正在创建我的第一个Spring博客,并试图在navbar中设置登录用户的全名。不幸的是,sec:authentication=“name”给了我用户电子邮件,${user.fullname)没有呈现任何内容

 @GetMapping("/")
public String index(Model model) {
    List<Article> articles = this.articleRepository.findAll();

   Object currentUser = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

   if ("anonymousUser".equals(currentUser.toString())) {
       model.addAttribute("username","GUEST");
   } else {
       UserDetails user = (UserDetails) currentUser;
       String name = this.userRepository.findByEmail(user.getUsername()).getFullName();
       model.addAttribute("username",name);
   }

    model.addAttribute("view", "home/index");
    model.addAttribute("articles", articles);

    return "base-layout";
}
@GetMapping(“/”)
公共字符串索引(模型){
List articles=this.articleRepository.findAll();
Object currentUser=SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if(“anonymousUser”.equals(currentUser.toString())){
model.addAttribute(“用户名”、“来宾”);
}否则{
UserDetails用户=(UserDetails)currentUser;
String name=this.userRepository.findByEmail(user.getUsername()).getFullName();
model.addAttribute(“用户名”,名称);
}
model.addAttribute(“视图”、“主页/索引”);
model.addAttribute(“文章”,文章);
返回“基本布局”;
}

但我想在任何地方使用它,现在我只能在“/”中使用它。请告知我如何修改代码,以便我能够在所有模板中使用用户名。

您应该创建一个带注释的类,该类指示带注释的类帮助您的
控制器。
。然后创建一个方法
@modeldattribute
,该方法将设置所有(或大多数)共享的公共属性你的控制器

例如:

@ControllerAdvice
public class UserControllerAdvice {

  @ModelAttribute
  public void addUserAttribute() {

   Object currentUser = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

   if ("anonymousUser".equals(currentUser.toString())) {
       model.addAttribute("username","GUEST");
   } else {
       UserDetails user = (UserDetails) currentUser;
       String name = this.userRepository.findByEmail(user.getUsername()).getFullName();
       model.addAttribute("username",name);
   }
}

感谢您的回答,对于这个问题,我应该在controller文件夹中创建@ControllerAdvice作为一个新文件,还是将其添加到controller中?很高兴您能理解,我是afk。您能接受这个答案吗?