FacesConverter не работает с моджаррой 2.1.0-b09, 2.1.1-b02? - PullRequest
0 голосов
/ 22 марта 2011

С этой зависимостью maven она работает:

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>2.0.4-b09</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.0.4-b09</version>
        <scope>compile</scope>
    </dependency>

Но при этом она не работает:

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <!--  or even this : <version>2.1.0-b09</version> -->
        <version>2.1.1-b02</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <!--  or even this : <version>2.1.0-b09</version> -->
        <version>2.1.1-b02</version>
        <scope>compile</scope>
    </dependency>

за исключением

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/primebert] threw exception [Expression Error: 
Named Object: heroConverter not found.] with root cause
javax.faces.FacesException: Expression Error: Named Object: heroConverter not found.
        at com.sun.faces.application.ApplicationImpl.createConverter(ApplicationImpl.java:1311)
        at org.jboss.weld.environment.servlet.jsf.ForwardingApplication.createConverter(ForwardingApplication.java:153)
        at com.sun.faces.facelets.tag.jsf.ValueHolderRule$LiteralConverterMetadata.applyMetadata(ValueHolderRule.java:85)
        at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
        at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
        at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
        at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegate
Impl.java:402)

А вот мой простой класс конвертера:

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter("heroConverter")
public class HeroBeanConverter implements Converter {

    public Object getAsObject(FacesContext context, UIComponent ui, String newValue) {
        System.out.println("getting as object");
        HeroBean hero = HeroBean.findHeroBeanByName(newValue);
        System.out.println("found hero : " + hero);
        return hero;
    }

    public String getAsString(FacesContext context, UIComponent component,
            Object value) {
        System.out.println("getting as string for value " + value);
        if (value == null) return "";
        return ((HeroBean) value).getName();
    }
}

Это ошибка или я здесь ошибаюсь?: -D

1 Ответ

1 голос
/ 22 марта 2011

Это ошибка. Это связано с выпуском 1937 . Эта ошибка приводит к тому, что аннотации JSF не сканируются в контейнерах, отличных от Glassfish, поскольку они случайно включили в себя код сканирования аннотаций, специфичный для Glassfish.

2.1.1-b02 также является сборкой для разработки. Скорее используйте стабильные сборки. Последняя стабильная версия 2.0.4-b09.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...