我有一个包含一些自定义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
)。
答案 0 :(得分:0)
只需在命名空间声明下面的*.taglib.xml
文件中指定复合库名称。
<namespace>http://my-company.com/my-components</namespace>
<composite-library-name>my-components</composite-library-name>