有没有办法使用 Thymeleaf 制作复合组件(如 JSF)?我发现了如何将参数发送到可以使用表达式语言检索的片段。但我还没有弄清楚如何像在 JSF 中那样将标记发送到片段。
例如,我有几个页面的左侧菜单非常相似。我希望能够在所有页面上使用单个片段,但传递一些标记以显示在菜单底部。有的页面要在底部显示文字,有的页面要显示文字,等等,其实比这更复杂。
<div class="menu" th:frament="menu">
<a th:text="${menuItem1}"></a>
<a th:text="${menuItem2}"></a>
<a th:text="${menuItem3}"></a>
<markup sent as parameter /> <!-- how do I do this? -->
</div>
<div th:substitueBy="template :: menu" th:with="menuItem1=item1, menuItem2:item2, menuItem3:item3">
<markup to be sent as parameter /> <!-- this does not work -->
</div>
最佳答案
我还想创建具有可交换内容的复合组件。这就是我开发thymeleaf-component-dialect的原因.
使用这种方言,您可以编写如下组件:
使用<tc:content/>
创建一个组件( thymeleaf 片段)标签
<div th:frament="menu">
<a th:text="${menuItem1}"></a>
<a th:text="${menuItem2}"></a>
<a th:text="${menuItem3}"></a>
<tc:content></tc:content>
</div>
使用组件
<tc:menu>
<h1>Some Header</h1>
<p>Lorem ipsum dolor sit amet</p>
</tc:menu>
结果将是
<div>
<a>Menu Item 1 Text</a>
<a>Menu Item 2 Text</a>
<a>Menu Item 3 Text</a>
<h1>Some Header</h1>
<p>Lorem ipsum dolor sit amet</p>
</div>
该方言是新的,仍处于 alpha 状态。欢迎反馈。
关于java - Thymeleaf 复合组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200971/