java - Thymeleaf 复合组件

标签 java spring composite-component thymeleaf

有没有办法使用 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/

相关文章:

JSF 拒绝处理深度嵌套的复合组件。不,真的是 : "JSF1098: [...] This is a waste of processor time [...]"

java - 如何以用户的语言生成随 secret 码?

Java/MySQL 结果集中途出现空指针异常

java - Spring Cloud Hystrix 在第一次命令调用时失败

java - Spring @Transactional 属性是否适用于私有(private)方法?

jsf-2 - ui :repeat with a composite component 内 commandLink 上的 setPropertyActionListener

java - 从 Linux EXTREME VPS 读取文件时出现文件未找到异常

如果键匹配,Java 将 `HashMap` 值追加到现有 HashMap

java - 检测Spring框架中所有bean已经实例化

jsf - 如何制作JSF复合组件的网格?