2013-02-28 64 views
2

我读过教程:http://jsflive.wordpress.com/2011/03/24/custom-component-library/,其中作者正在制作空.taglib.xml文件,根据教程,标签应自动从资源子文件夹加载。是否有必要在facelet taglib 2.0中声明标签?

但是,我,我有例外:

javax.faces.FacesException:无法获取组件元数据 myComponent.xhtml

我必须手动指定每个标签:

<tag> 
    <tag-name>myComponent</tag-name> 
    <source>tags/mylib/myComponent.xhtml</source> 
</tag> 

我错过了什么吗?标签定义位置在哪里自动解决?我正在运行WebSphere 7.0MyFaces 2.0.7

+0

但他们在项目taglib.xml文件,这是我GOOGLE了他们... – 2013-02-28 16:23:04

+0

发布您的代码:声明,定义,使用。 – 2013-03-12 15:19:17

回答

2

我认为你在这里混合起来。在我上面提到的博客文章中,我加入复合材料部件像这样的标记库:

<facelet-taglib> 
    <namespace>http://jsflive.at/taglib</namespace> 
    <composite-library-name>jsflive</composite-library-name> 
</facelet-taglib> 

这增加了该资源库的所有复合材料部件与composite-library-name指定的名称。标签名称是按照惯例从文件名派生的。

你相反指定标签的Facelets的片段:

<tag> 
    <tag-name>myComponent</tag-name> 
    <source>tags/mylib/myComponent.xhtml</source> 
</tag> 

这有什么好做的复合成分!这种方法是为JSF 2.0定义Facelets片段定制标签的方式。您的代码为引用的xhtml文件创建了一个标记,该标记可以是任意的Facelets文件。在这种情况下,路径相对于taglib.xml文件的位置。

JSF 2.2然而将提供一种方式来为特定的复合材料部件的标签。我的帖子http://jsflive.wordpress.com/2013/04/06/jsf22-cc-taglib/显示了这一过程。

+0

感谢您指出2.2指定自定义合成标签的方式! – 2014-10-23 06:26:13