Не удается найти аннотированный пользовательский компонент JSF2 в банке - PullRequest
5 голосов
/ 27 мая 2011

Мы переносим JSF1.2 в приложение JSF2, и я столкнулся с проблемой пользовательских компонентов.У нас есть отдельная банка с компонентами, и в этой банке у меня есть это:

@FacesComponent(value = "Panel2")
public class Panel2 extends UIOutput { ... }

В моем taglib под META-INF у меня есть это:

<facelet-taglib xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd"
    id="mw">
    <namespace>http://www.ssss.be/jsf/mw</namespace>
    <composite-library-name>mw</composite-library-name>
    <tag>
        <tag-name>panel2</tag-name>
        <component>
            <component-type>Panel2</component-type>
        </component>
    </tag>
</facelet-taglib>

После создания банкиЭто все и использовать его в моем другом проекте, я использую тег следующим образом:

xmlns:mw="http://www.sofico.be/jsf/mw"

А затем:

<mw:panel2 />

Но результат, к сожалению, такой:

javax.faces.FacesException: Expression Error: Named Object: Panel2 not found. at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1858)
at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1129)

Что я здесь не так делаю?

1 Ответ

8 голосов
/ 27 мая 2011
  • убедитесь, что версия JSF вface-config.xml является как минимум версией 2
  • , убедитесь, что в файле Face-config.xml атрибут metadata-complete не имеет значения true.*
  • убедитесь, что класс либо в WEB-INF/classes;или, если в банке в WEB-INF/lib, что баночка содержит face-config.xml (в противном случае спецификация не требует сканирования аннотаций)
  • убедитесь, что нет Panel2 компонента типаопределено в файле конфигурации XML (этот список будет иметь приоритет)

См. JSF 2 spec ;раздел 11.5.1.

...