3

I have a composite component named <my:foo> and I'm building another composite component named <my:bar>. But when I attempt to use <my:foo> inside the <cc:implementation> of <my:bar>, the following exception is been thrown:

<my:foo> Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo

How is this caused and how can I solve it?

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Guilherme Torres Castro
  • 15,135
  • 7
  • 59
  • 96

1 Answers1

2

This is caused by a bug which was introduced in Mojarra 2.1.8, continued in 2.1.9 and is fixed in 2.1.10. This bug causes that composite component's own XML namespace cannot be declared in a root XML element like <ui:component>/<ui:composition>/<html>/etc as follows:

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

This would result in the following exception when you attempt to nest <my:foo> inside the <cc:implementation>.

<my:foo> Tag Library supports namespace: http://java.sun.com/jsf/composite/mycomponents, but no tag was defined for name: foo

The current workaround, apart from downgrading to 2.1.7 and waiting for 2.1.10 to be released, is to move the XML namespace declaration into the <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>

See also:

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • Since when do you have to log in to view the Jira issues? I've been on those pages before without having to login? – Louise Jan 14 '13 at 13:21
  • @Louise: actually, that's new to me as well. Sorry, I have no affiliation with Mojarra JIRA, so I'm not sure about the reasons. I do however agree that the login requirement makes no sense. – BalusC Jan 14 '13 at 13:34
  • Bummer. I do have the same problem but without even nesting components, so the above solution doesn't apply. Some comments on those issues described this version of the problem, but I didn't have the time last year to look into it. Now the only option to read up on them is to make an account ... yet another one ;) – Louise Jan 14 '13 at 13:44