我想替换"内容"我的index.html中的布局,点击菜单(Spring / Thymeleaf)

时间:2017-02-07 13:16:00

标签: java html spring spring-boot thymeleaf

这是我的index.html页面的正文。它指定了应该在所有页面上的静态页眉和页脚。内容是我想根据菜单点击更改的内容。

df.coalesce(1).write.format("com.databricks.spark.csv").option("header", "true").option("nullValue"," ").save("/home/user/test_table/")

在我的header.html中,我有一个看起来像这样的链接,例如:

<body>

<div class="container" style="width: 100% !important;">

    <div th:replace="fragments/header :: header"></div>

    <div th:replace="@{'fragments/' + ${content}} :: ${content}"></div>

    <div th:replace="fragments/footer :: footer"></div>

</div>

</body>

当用户点击此链接时,应将片段request.html插入我的内容布局:<li><a href="#" th:href="@{/index?content=request}">Make a Request</a></li> 。如果用户点击其他链接(例如<div th:replace="@{'fragments/' + ${content}} :: ${content}"></div>),则应使用片段team.html等替换内容部分。

<li><a href="#" th:href="@{/index?content=team}">My Team</a></li>

有人建议我使用上面的RequestMapping模型根据上面列出的菜单点击更改索引页面上的内容。但我通过什么代替&#34;请求&#34;以上让这个工作?截至目前,我为@RequestMapping("/index") String index(ModelMap model){ model.addAttribute("content", "request"); return "index"; } 获得了以下内容:

http://localhost:8081/request

如何使上述模型动态化?

我的MVC配置:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Feb 07 14:15:22 CET 2017
There was an unexpected error (type=Not Found, status=404).
No message available

无论如何,它似乎总是用@Configuration public class MvcConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/home").setViewName("home"); registry.addViewController("/").setViewName("home"); registry.addViewController("/index").setViewName("index"); registry.addViewController("/login").setViewName("login"); registry.addViewController("/request").setViewName("index"); registry.addViewController("/requests").setViewName("index"); registry.addViewController("/team").setViewName("index"); } } 而不是请求的参数替换布局的内容部分。

1 个答案:

答案 0 :(得分:0)

你想要实现的目标需要Thymeleaf渲染视图2次。首先,它会将<div th:replace="@{'fragments/' + ${content}} :: ${content}"></div>呈现为<div th:replace="fragments/request :: request"></div>。在第二次渲染时,它将替换&#34; request&#34;满足于此。

Thymeleaf并没有这样做。

即使Thymeleaf支持2次渲染,我也不会看到您的方法有任何优势。

我建议你阅读Thymeleaf在他们网站上发布的教程:

http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html

http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html