【问题标题】:Tiles - Access child attribute in parent layoutTiles - 访问父布局中的子属性
【发布时间】:2013-10-22 14:37:37
【问题描述】:

请原谅我再次打开这个话题,但我在任何地方都找不到这个解决方案,这让我发疯了。

我来自一个类似 Django 的模板系统,我可以像这样扩展布局:

child.html

{% extends 'base.html' %}

{% block title %}My Page Title{% endblock %}

{% block content %}
<p>My Page Body</p>
{% endblock content %}

base.html

<html>
<head>
   <title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>

在 Tiles 中,我想做类似的事情,我可以在子模板中设置页面的标题。我尝试在我的子模板中使用&lt;tiles:putAttribute /&gt;,但它们没有被传递给父模板。

Tiles 不以这种自下而上的方式处理模板吗?我找到了一堆使用 spring 消息或 Tiles EL 的解决方案,但这些都需要在我的 Controller 层中设置页面标题。在我看来,页面标题是 View 层的一部分。

我正在使用动态图块定义来加载我的模板,因此为每个页面创建单独的图块定义是不可能的。

【问题讨论】:

  • 我正在寻找相同类型的解决方案。您是否能够解决此问题,或者您最终是否解决了这个问题?
  • 我无法找到使用瓷砖的解决方案。我正在研究仅使用 Thymeleaf(以及 thymeleaf-layout-dialect)作为模板引擎,因为它允许这样做,以及许多其他动态功能。

标签: java tiles tiles2 apache-tiles


【解决方案1】:

在您尝试使用父模板中的属性之前,必须包含子模板。在这种情况下,您只需将值放入 requestScope 中,而不必担心 tiles 属性范围。

否则,通常在这种情况下,您需要进一步分解构图。

例如,您可以插入另一个模板,而不是尝试直接写出父模板中的属性。这个新模板与您已经拥有的另一个子模板具有相似的组成,并负责写出属性,而不是尝试传递此属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多