我的项目分为两个子项目。一个是组件库,第二个是实现页面和内容的主要部分。
布局组件使用块和委托来实现一些动态。这样的事情:
<!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:块参数只能直接在组件元素中使用...
如果我将布局从库移动到主应用程序项目,整个构造工作正常。
有人有想法吗?
答案 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。