首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache 2.1 --如何防止继承的列表属性被复制?

Apache 2.1 --如何防止继承的列表属性被复制?
EN

Stack Overflow用户
提问于 2009-05-29 04:20:31
回答 1查看 2.8K关注 0票数 3

我正在使用Apache Tiles 2.1进行一个项目。

我遇到了一个问题,就是用list属性扩展模板会创建这些列表项的副本.为每个继承级别设置一组重复项。

例如,下面是基本定义,以及它将生成的页面:

代码语言:javascript
复制
<definition name="base" template="somePage.jsp">
    <!-- snip -->
    <put-list-attribute name="styles">
        <add-attribute value="base.css"/>
    </put-list-attribute>
</definition>

这将产生类似于预期的html:

代码语言:javascript
复制
<html>
    <head>
        <!-- snip -->
        <link rel="stylesheet" type="text/css" href="../css/base.css"/>
    </head>
    <body>
         <!-- snip-->
    </body>
</html>

如果我像这样扩展定义:

代码语言:javascript
复制
<definition name="firstExtension" extends="base">
    <!-- snip -->
    <put-list-attribute name="styles" inherit="true">
        <add-attribute value="someOther.css"/>
    </put-list-attribute>
</definition>

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

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
<definition name="secondExtension" extends="firstExtension">
    <!-- snip -->
    <put-list-attribute name="styles" inherit="true">
        <add-attribute value="evenMore.css"/>
    </put-list-attribute>
</definition>

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

代码语言:javascript
复制
<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文件到列表。

这是瓷砖中的一个bug,还是我只是以一种非故意的方式使用它们呢?有什么方法可以不简单地消除inherit="true"就解决这个问题吗?如果可能的话,我希望避免在每个定义上编写相同的“核心”css和javascript文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-05 02:42:19

事实证明,这确实是Apache 2.1.2中的一个bug,而不是我的配置问题。

已予以修正,并将列入2.1.3更新:

关于这件事请看tiles JIRA问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/924366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档