【问题标题】:Share data via thymeleaf fragment通过百里香片段共享数据
【发布时间】:2019-09-09 01:57:58
【问题描述】:

我有一个名为 nav 的百里香片段,我包含在所有前端页面中,它是这样的:

<nav class="navbar navbar-expand-md navbar-dark bg-dark" th:fragment="nav">
    <div class="collapse navbar-collapse" id="navbarsExampleDefault">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
            </li>
How to get Java data here ?
        </ul>
    </div>
</nav>

但我现在想做的是从数据库中获取一些数据,并在此片段中提供这些数据,然后这些数据将出现在包含此片段的每个页面上。

如果我想定期从控制器向视图传递数据,我会使用Modelmodel.addAttribute 并返回包含相关模型数据的适当视图,但是如何将数据传递给这个片段?

【问题讨论】:

    标签: java spring-boot thymeleaf


    【解决方案1】:
    1. 您可以创建一个拦截器并在postHandle 方法上添加模型属性(它允许您访问ModelAndView 对象。拦截器必须位于具有此片段的所有控制器上。

    2. 您可以将相关模型属性添加到会话中,并通过${session.attribute} 访问它们。

    3. 结合使用@ControllerAdvice注解和@ModelAttribute为所有控制器添加模型属性。

    【讨论】:

    • 你能给我一些例子吗?另外 - 我如何设置一个会话而不首先点击任何特定的 url/请求?我应该在某些控制器或 WebConfig.java 文件中执行此操作,这将是理想的 IMO。当我说示例时,我的意思是一些简单的东西,String name = "john" 其中name 可以在整个应用程序中访问就足够了。
    • @ControllerAdvice 似乎正在工作,我会接受这个答案,因为提示
    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 2012-09-21
    • 2020-11-28
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多