如何处理从库加载的Tapestry布局组件的块?

时间:2013-12-02 20:37:27

标签: tapestry

我的项目分为两个子项目。一个是组件库,第二个是实现页面和内容的主要部分。

布局组件使用块和委托来实现一些动态。这样的事情:

<!DOCTYPE html>
<!-- myLayout template -->
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
      xmlns:p="tapestry:parameter">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <link rel="SHORTCUT ICON" href="favicon.ico"/>
        <title>${title}</title>
    </head>
    <body>
        <div class="tbar">
            <t:delegate to="toolbar"/>        
        </div>
        <t:body/>
    </body>
</html>

我的页面以这样的方式包含布局:

<?xml version="1.0"?>
<!-- Index.tml -->
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
    xmlns:p="tapestry:parameter"    
    xmlns:mylib="tapestry-library:myLib"
    mylib:type="myLayout">

    <p:toolbar>
        <ul class="tbuttons">
            <li>
                <t:pagelink page="exp/index" class="tbutton">
                    <img src="${context:}/static/pic/print.png"/>
                </t:pagelink>            
            </li>
        </ul>
    </p:toolbar>
</html>

如果我运行我的项目并尝试访问该网站,则会出现以下错误:

解析模板类路径失败:* / Index.tml:块参数只能直接在组件元素中使用...

如果我将布局从库移动到主应用程序项目,整个构造工作正常。

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

您是否为ComponentClassResolver做出了贡献?没有名称空间别名吗?

或者:

<html
    xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
    xmlns:p="tapestry:parameter"    
    t:type="mylib/myLayout"
>

    <p:toolbar>...</p:toolbar>
</html>

或者

<t:mylib.mylayout
    xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
    xmlns:p="tapestry:parameter"
>
    <p:toolbar>...</p:toolbar>
</t:mylib.mylayout>

有关组件库的完整文档here