Конвертер не работает с @ViewScoped

Я столкнулся с проблемой с конвертером. В моем файле xhtml у меня есть selectOneMenu со списком объектов, и я хочу установить объект в своем manageBean.

Если мой управляемый компонент имеет @SessionScoped, объект в управляемом компоненте заполняется, но если управляемый компонент имеет @ViewScoped, преобразователь никогда не используется, и мой объект имеет значение null.

как исправить эту проблему?

Xhtml:

<p:selectOneMenu value="#{rechercheBean.role}" converter="#{typConverter}">
    <f:selectItems id="item" value="#{typBean.roles}" var="r" itemLabel="#{r.valeur}" itemValue="#{r}" />
</p:selectOneMenu>

типКонвертер :

public class TypConverter implements Converter{
    @EJB
    private TypFacadeLocal  TypBean;

    public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
        if (submittedValue.trim().equals("")) {
            return null;
        }
        else {
            try {
                Integer id = Integer.parseInt(submittedValue);
                Typ typ = new Typ();
                typ = TypBean.find(id);
                return typ;
            }
            catch (NumberFormatException exception) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Typ non valide"));
            }
        }
    }

    public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
        if (value == null || value.equals("")) {
            return "";
        }
        else {
            return String.valueOf(((Typ) value).getId());
        }
    }
}

Ткс много


person holegeek    schedule 13.08.2012    source источник
comment
Причина проблемы пока не видна в опубликованном коде. Пожалуйста, опубликуйте SSCCE.   -  person BalusC    schedule 13.08.2012
comment
В этой проблеме нет ошибки кода... Мой объект в manageBean остается нулевым, когда manageBean имеет @ViewScoped. Если я поставлю точку останова в TypConverter, она никогда не будет использоваться в этой области (в отличие от @SessionScoped)   -  person holegeek    schedule 13.08.2012
comment
Я понял это. Я просто говорил, что код, который вы разместили до сих пор, выглядит нормально, и поэтому причина вашей конкретной проблемы не может быть найдена/понята на основе данного кода. Вам нужно предоставить больше контекста/кода, чтобы мы могли определить реальную причину. Фрагмент со вкусом SSCCE был бы наиболее идеальным (для JSF это в основном наименьший возможный файл XHTML и класс вспомогательного компонента, который мы могли бы просто скопировать, вставить и запустить без каких-либо изменений, чтобы увидеть проблемы сами).   -  person BalusC    schedule 13.08.2012


Ответы (1)


Проблема в компоненте c:when. С обработчиком атрибутов компонента проблем нет.

person holegeek    schedule 19.09.2012