更改复合组件的命名空间

时间:2014-03-07 10:45:24

标签: jsf jsf-2 composite-component jsf-2.2

我有一个包含一些自定义JSF组件的小型库(JAR)。其中一些是复合组件,它们完全(或部分)在位于META-INF/resources/my-components下的XHTML文件中实现。要使用其他XHTML文件中的这些组件,我必须使用XML命名空间http://xmlns.jcp.org/jsf/composite/my-components

此库中的其他相关组件使用@FacesComponent(和@FacesRenderer)实现为POJO。要使用这些组件,我必须使用在组件的@FacesComponent - 注释(属性namespace)中定义的XML命名空间。在这一点上,我可以选择我想要的任何东西(如http://my-company.com/my-components)。

由于我没有找到更改复合组件的名称空间前缀的可能性,我不想将我的POJO的名称空间设置为jcp.org(我不确定这是否可能) ),我必须使用两个不同的命名空间来使用来自同一个库的组件。

但是由于命名空间的不同仅仅是因为实现细节,并且将来可能会以不同的方式实现一个组件,这不是我想要的。

所以问题是:有没有办法为复合组件指定完整的命名空间?当然,我想使用与我的其他组件相同的组件(示例中为http://my-company.com/my-components)。

1 个答案:

答案 0 :(得分:0)

只需在命名空间声明下面的*.taglib.xml文件中指定复合库名称。

<namespace>http://my-company.com/my-components</namespace>
<composite-library-name>my-components</composite-library-name>