gpt4 book ai didi

tiles - Apache Tiles 2.1 - 如何防止继承的列表属性重复?

转载 作者:行者123 更新时间:2023-12-02 11:12:08 27 4
gpt4 key购买 nike

我正在使用 Apache Tiles 2.1 开展一个项目。

我遇到了一个问题,即使用列表属性扩展模板会创建这些列表项的重复项...每个继承级别都有一组重复项。

作为示例,以下是基本定义及其将生成的页面:

<definition name="base" template="somePage.jsp">
<!-- snip -->
<put-list-attribute name="styles">
<add-attribute value="base.css"/>
</put-list-attribute>
</definition>

这将产生像这样的 html,正如预期的那样:

<html>
<head>
<!-- snip -->
<link rel="stylesheet" type="text/css" href="../css/base.css"/>
</head>
<body>
<!-- snip-->
</body>
</html>

如果我像这样扩展定义:

<definition name="firstExtension" extends="base">
<!-- snip -->
<put-list-attribute name="styles" inherit="true">
<add-attribute value="someOther.css"/>
</put-list-attribute>
</definition>

正如预期的那样,我再次得到了这个结果:

<html>
<head>
<!-- snip -->
<link rel="stylesheet" type="text/css" href="../css/base.css"/>
<link rel="stylesheet" type="text/css" href="../css/someOther.css"/>
</head>
<body>
<!-- snip-->
</body>
</html>

但是,如果我扩展前一个,问题就会开始:

<definition name="secondExtension" extends="firstExtension">
<!-- snip -->
<put-list-attribute name="styles" inherit="true">
<add-attribute value="evenMore.css"/>
</put-list-attribute>
</definition>

第二级扩展产生以下结果:

<html>
<head>
<!-- snip -->
<link rel="stylesheet" type="text/css" href="../css/base.css"/>
<link rel="stylesheet" type="text/css" href="../css/base.css"/> <!-- note: duplicate! -->
<link rel="stylesheet" type="text/css" href="../css/someOther.css"/>
<link rel="stylesheet" type="text/css" href="../css/evenMore.css"/>
</head>
<body>
<!-- snip-->
</body>
</html>

“原始”列表继承的属性对于每个扩展定义都会重复一次,即使该定义没有向列表属性添加任何内容。

我试图保持我的定义非常干燥,所以在某些情况下我有 4-5 级继承。因此,“始终使用”的 css 文件会被重复 4-5 次,即使只有“最低”定义是唯一将另一个 css 文件添加到列表中的文件。

这是图 block 中的错误,还是我只是以非预期的方式使用它们?有什么方法可以解决这个问题,而无需简单地消除 inherit="true" 吗?如果可能的话,我希望避免在每个定义上编写相同的“核心”css 和 javascript 文件。

最佳答案

事实证明,这确实是 Apachetiles 2.1.2 中的一个错误,而不是我这边的配置问题。

已修复并将包含在 2.1.3 更新中:

请参阅tiles JIRA issue关于它。

关于tiles - Apache Tiles 2.1 - 如何防止继承的列表属性重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924366/

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