【问题标题】:Is it necessary to declare tags in facelet taglib 2.0?是否需要在 facelet taglib 2.0 中声明标签?
【发布时间】:2013-02-28 09:24:21
【问题描述】:

我已阅读教程:http://jsflive.wordpress.com/2011/03/24/custom-component-library/,其中作者正在制作空的 .taglib.xml 文件,根据教程,标签应自动从资源子文件夹加载。

但是,我有一个例外:

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

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

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

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

【问题讨论】:

  • 但是他们在项目中有 taglib.xml 文件,这就是我用谷歌搜索它们的方式......
  • 发布您的代码:声明、定义、用法。

标签: jsf-2 facelets taglib


【解决方案1】:

我认为你在这里搞混了。在我上面提到的博客文章中,我将复合组件添加到标签库中,如下所示:

<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>

这与复合组件无关!这种方法是为 Facelets 片段定义自定义标记的 JSF 2.0 之前的方法。您的代码为引用的 xhtml 文件创建一个标记,该文件可以是任意 Facelets 文件。在这种情况下,路径相对于taglib.xml 文件的位置。

然而,JSF 2.2 将提供一种为特定复合组件指定标签的方法。我的帖子http://jsflive.wordpress.com/2013/04/06/jsf22-cc-taglib/ 展示了它是如何工作的。

【讨论】:

  • 感谢指出 2.2 指定自定义复合标签的方式!
猜你喜欢
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多