当前位置: 首页 > 知识库问答 >
问题:

Spring MVC Thymeleaf:向所有模板的上下文添加变量

史弘博
2023-03-14

如何添加一个“全局”变量(如用户名),以便在模板上下文中使用?

目前,我正在将这些显式设置到我的TemplateController中的每个ModelAndView对象。

共有3个答案

相威
2023-03-14

如果您只是想从应用程序中获得一些东西。属性输入到您的thymeleaf模板中,然后您可以使用Spring的SpEL。

${@environment.getProperty('name.of.the.property')}
上官季
2023-03-14

ControllerAdvice为我工作:

@ControllerAdvice(annotations = RestController.class)
public class AnnotationAdvice {

     @Autowired
     UserServiceImpl userService;

     @ModelAttribute("currentUser")
     public User getCurrentUser() {
         UserDetails userDetails = (UserDetails) 
         SecurityContextHolder.getContext()
               .getAuthentication().getPrincipal();

      return userService.findUserByEmail(userDetails.getUsername());
     }
  }
花玄裳
2023-03-14

有几种方法可以做到这一点。

如果要向单个控制器提供的所有视图添加变量,可以添加带注释的方法(请参阅参考文档)。

请注意,您还可以使用相同的@Model属性机制,一次寻址多个控制器。为此,您可以在带有@ControlllerAdvie注释的类中实现该@ModelAtcm方法-请参阅参考文档。

 类似资料:
  • 这似乎不起作用。 我还尝试在代码生成器使用的xml中添加架构名称,如 http://www.jooq.org/doc/3.5/manual/code-generation/codegen-advanced/

  • 问题内容: 我想在每个页面上显示一个导航栏。在PHP中,我会编写导航栏,然后将其包含在其他页面上。我试图将导航栏模板包括或扩展到其他模板中,但是没有用。它仅输出“这是主页”。如何在每个模板中正确包含导航栏? layout.html index.html 问题答案: 使用所有页面共有的布局和导航创建基本模板。然后扩展此模板以创建实际的页面。向基本模板中添加可以在其他模板中覆盖的块。 base.htm

  • 请帮帮我!!我到处找了很多,找到了任何有用的信息,或者我有,但我不能在这么短的时间内测试我在web上找到的所有东西,而且spring文档似乎只对普通情况和xml配置非常好,不适合我试图做的疯狂的事情,也不适合编程配置。

  • 我有一些不应该实例化的带有自定义注释的类(抽象类,它只是实际bean的子组件)。但是在这些类之上,在运行时,在上下文初始化阶段,我想在应用程序上下文中添加额外的bean。 因此,基本上我需要扫描类路径,处理结果,并将新bean引入curent应用程序上下文。 似乎是spring-mvc、spring-tasks和spring-integration在做这件事(我试着从源代码中学习--没有运气) 我

  • 我有一个eureka服务,它有一个swagger。eureka在http://localhost:8050,服务按名称 /service.问题是当我打开swagger并尝试发出请求时,它会将其发送到。该服务有一个上下文路径“path”,因此它应该是。这是swagger的配置: