gpt4 book ai didi

thymeleaf - 是否可以在 thymeleaf 布局方言中将参数传递给布局?

转载 作者:行者123 更新时间:2023-12-04 16:39:21 29 4
gpt4 key购买 nike

我有一个通用的布局,默认情况下,除已包含(更高级的)搜索表单的搜索页面本身之外,每个页面上均应显示(基本)搜索表单。

是否可以将参数从我的搜索页面传递到版式,以便不显示默认搜索表单?

这是我想做的一个例子:

layout.html

<html layout:???="displayShowForm = true">
...
<form action="search" th:if="${displayShowForm}">...</form>
...
<div layout:fragment="content">...</div>

home.html(显示默认搜索表单)
<html layout:decorator="layout">
...
<div layout:fragment="content">...</div>

search.html(隐藏默认搜索表单)
<html layout:decorator="layout (displayShowForm = false)">
...
<div layout:fragment="content">
...
<form action="advancedSearch">...</form>

最佳答案

是的,即使Thymeleaf的文档没有明确说明,这也是完全有可能的。

您所要做的就是使用 th:with 属性传递您的参数。可能还有其他方法,但这似乎是最简单的方法。

这是我的实现的精简版:

默认装饰器-fragment/layout/default.html

<!doctype html>
<html xmlns:layout="http://www.thymeleaf.org" xmlns:th="http://www.thymeleaf.org">
<body>
<div th:replace="fragments/header :: main"></div>
<div layout:fragment="content">
main content goes here
</div>
</body>
</html>

header 片段-fragments/header.html
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div th:fragment="main">
<nav>
<ul>
<li><a href="#" th:classappend="${currentPage == 'home'} ? 'active'">Home Page</a></li>
<li><a href="#" th:classappend="${currentPage == 'about'} ? 'active'">About</a></li>
</ul>
</nav>
</div>
</body>

主页文件-home.html
<!doctype html>
<html layout:decorator="layout/default" th:with="currentPage='home'"
xmlns:layout="http://www.thymeleaf.org/" xmlns:th="http://www.thymeleaf.org">
<body>
<div layout:fragment="content">
This is my home page content... thrilling, isn't it?
</div>
</body>
</html>

在这里,在home.html文件中,您可以看到我包括默认的装饰器,并使用th:with属性传递了我的参数。我实际上并没有在布局装饰器中使用参数,而是在装饰器中包含的header.html中使用了它。无需将其从装饰器传递到header.html片段,因为它已经在范围内。

也不需要对header.html中的currentPage变量进行NULL检查。从home.html删除参数时,不会直接添加 Activity 的CSS类。

如果要渲染home.html,我希望看到以下输出:
<!doctype html>
<html>
<body>
<nav>
<ul>
<li><a href="#" class="active">Home Page</a></li>
<li><a href="#">About</a></li>
</ul>
</nav>
<div>
This is my home page content... thrilling, isn't it?
</div>
</body>
</html>

关于thymeleaf - 是否可以在 thymeleaf 布局方言中将参数传递给布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28636223/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com