【问题标题】:<my:foo> Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo<my:foo> 标签库支持命名空间:http://java.sun.com/jsf/composite/mycomponents,但没有为名称定义标签:foo
【发布时间】:2012-06-05 14:08:47
【问题描述】:

我有一个名为&lt;my:foo&gt; 的复合组件,我正在构建另一个名为&lt;my:bar&gt; 的复合组件。但是当我尝试在&lt;my:bar&gt;&lt;cc:implementation&gt; 中使用&lt;my:foo&gt; 时,会抛出以下异常:

&lt;my:foo&gt; 标签库支持命名空间:http://java.sun.com/jsf/composite/mycomponents,但没有为名称定义标签:foo

这是怎么引起的,我该如何解决?

【问题讨论】:

    标签: java jsf jsf-2 composite-component nested


    【解决方案1】:

    这是由 Mojarra 2.1.8 中引入的错误引起的,该错误在 2.1.9 中继续,并在 2.1.10 中修复。这个错误导致复合组件自己的 XML 命名空间不能在像 &lt;ui:component&gt;/&lt;ui:composition&gt;/&lt;html&gt;/etc 这样的根 XML 元素中声明,如下所示:

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

    当您尝试将&lt;my:foo&gt; 嵌套在&lt;cc:implementation&gt; 中时,这将导致以下异常。

    &lt;my:foo&gt; 标签库支持命名空间:http://java.sun.com/jsf/composite/mycomponents,但没有为名称定义标签:foo

    除了降级到 2.1.7 并等待 2.1.10 发布之外,当前的解决方法是将 XML 命名空间声明移动到 &lt;cc:implementation&gt;

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

    另见:

    【讨论】:

    • 从什么时候开始必须登录才能查看 Jira 问题?我以前无需登录就访问过这些页面?
    • @Louise:实际上,这对我来说也是新的。抱歉,我与 Mojarra JIRA 没有隶属关系,所以我不确定原因。但是,我同意登录要求没有意义。
    • 无赖。我确实有同样的问题,但甚至没有嵌套组件,所以上述解决方案不适用。一些关于这些问题的 cmets 描述了这个版本的问题,但我去年没有时间研究它。现在阅读它们的唯一选择是创建一个帐户......还有一个;)
    猜你喜欢
    • 2012-09-09
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2011-07-09
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多