我有一个名为复合材料部件的<my:foo>
和我建立另一个名为复合组件<my:bar>
。 但是,当我尝试使用<my:foo>
里面<cc:implementation>
的<my:bar>
,以下异常被扔:
<my:foo>
标记库支持的命名空间: http://java.sun.com/jsf/composite/mycomponents ,但没有标签被用于名定义:FOO
这是怎么造成的,我该怎么解决呢?
我有一个名为复合材料部件的<my:foo>
和我建立另一个名为复合组件<my:bar>
。 但是,当我尝试使用<my:foo>
里面<cc:implementation>
的<my:bar>
,以下异常被扔:
<my:foo>
标记库支持的命名空间: http://java.sun.com/jsf/composite/mycomponents ,但没有标签被用于名定义:FOO
这是怎么造成的,我该怎么解决呢?
这是由这是在钻嘴鱼科2.1.8推出,继续2.1.9,并固定在2.1.10的错误引起的。 此错误会导致该复合组件自己的XML命名空间不能在像根XML元素中声明<ui:component>
/ <ui:composition>
/ <html>
/等等,如下所示:
<ui:component
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
xmlns:my="http://java.sun.com/jsf/composite/mycomponents"
>
<cc:interface>
...
</cc:interface>
<cc:implementation>
<my:foo />
</cc:implementation>
</ui:component>
这将导致以下情况例外,当您试图巢<my:foo>
里面<cc:implementation>
。
<my:foo>
标记库支持的命名空间: http://java.sun.com/jsf/composite/mycomponents ,但没有标签被用于名定义:FOO
目前的解决方法,除降级到2.1.7和等待2.1.10被释放,是对XML命名空间声明移动到<cc:implementation>
。
<ui:component
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:cc="http://java.sun.com/jsf/composite"
>
<cc:interface>
...
</cc:interface>
<cc:implementation xmlns:my="http://java.sun.com/jsf/composite/mycomponents">
<my:foo />
</cc:implementation>
</ui:component>