标记库支持的命名空间:http://java.sun.com/jsf/composite/mycom

2019-06-25 04:57发布

我有一个名为复合材料部件的<my:foo>和我建立另一个名为复合组件<my:bar> 。 但是,当我尝试使用<my:foo>里面<cc:implementation><my:bar> ,以下异常被扔:

<my:foo>标记库支持的命名空间: http://java.sun.com/jsf/composite/mycomponents ,但没有标签被用于名定义:FOO

这是怎么造成的,我该怎么解决呢?

Answer 1:

这是由这是在钻嘴鱼科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>

也可以看看:

  • 钻嘴鱼科的问题2392
  • 钻嘴鱼科的问题2437


文章来源: Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo