JSF - проблема с инъекцией бобов - PullRequest
2 голосов
/ 30 ноября 2010

Как предложил пользователь несколько лет назад в другом вопросе, мне нужно добавить боб в другой бин.

Итак, я делаю следующее:

@ManagedBean
@RequestScoped
public class Articles {
    private String selectedMenu;

    @ManagedProperty(value="#{user}")
    private UserManager user;

    @PostConstruct
    public void init() {
        if(selectedMenu==null || selectedMenu.trim().isEmpty()) {
            this.selectedMenu="0";
        }
    }

    // now here i should access to user.methods

    // getter and setter
}

На самом деле, яне может получить доступ к данным UserManager.Я получаю эти ошибки:

БРАУЗЕР malformedXML: INVALID_STATE_ERR: Dom Exception 11

ЖУРНАЛ СЕРВЕРА 30-nov-2010 15.36.58 javax.faces.component.UIViewRoot$ViewMap put AVVERTENZA: Setting non-serializable attribute value into ViewMap: (key: profileSelector, value class: model.ProfileSelector) 30-nov-2010 15.36.59 com.sun.faces.mgbean.BeanManager preProcessBean GRAVE: JSF will be unable to create managed bean articles when it is requested. The following problems where found: - Property user for managed bean articles does not exist. Check that appropriate getter and/or setter methods exist. 30-nov-2010 15.36.59 com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit GRAVE: com.sun.faces.mgbean.ManagedBeanCreationException: Unable to create managed bean articles. The following problems were found: - Property user for managed bean articles does not exist. Check that appropriate getter and/or setter methods exist.

Если я комментирую @ManagedProperty(value="#{user}")и private UserManager user; чем я не вижу никакой ошибки.Вот в чем проблема.Что я не так?

Ура

1 Ответ

5 голосов
/ 30 ноября 2010

malformedXML: INVALID_STATE_ERR: Dom Exception 11

Эта ошибка XML указывает на ошибку в вашем представлении (XHTML), а не в компоненте.Я не понимаю, почему произошла эта ошибка, но, вероятно, у вас довольно сложное дерево компонентов с несколькими rendered атрибутами, один из которых зависит от свойства user, которое вызвало неправильное состояние в дереве XML на стороне клиента.

Что касается журналов сервера:

AVVERTENZA: Установка несериализуемого значения атрибута в ViewMap: (ключ: profileSelector, значение класс:model.ProfileSelector )

Это не обязательно вредно, но чтобы исправить это, вам нужно позволить классу реализовать java.io.Serializable.

public class ProfileSelector implements Serializable {}

Таким образом, сервер сможет передавать экземпляр по сети и / или сохранять экземпляр на жестком диске, а не в памяти при необходимости (когда сервер перезагружается или помещается в кластер серверов).


30 ноября 2010 г. 15.36.59 com.sun.faces.mgbean.BeanManager preProcessBean GRAVE: JSF не сможет создавать статьи управляемых бинов, когда это будет запрошено.Обнаружены следующие проблемы: - Пользователь свойства для статей управляемого компонента не существует.Проверьте, существуют ли соответствующие методы получения и / или установки .

Это также говорит само за себя.Убедитесь, что существуют правильные методы получения / установки для свойства user управляемого компонента с именем articles.

@ManagedBean
@RequestScoped
public class Articles {

    @ManagedProperty(value="#{user}")
    private UserManager user;

    public UserManager getUser() {
        return user;
    }

    public void setUser(UserManager user) {
        this.user = user;
    }

}

. При необходимости вы можете разрешить своей IDE автоматически генерировать их.В Eclipse проверьте раздел Source в контекстном меню правой кнопки мыши (Alt + Shift + S).


30-nov-2010 15.36.59 com.sun.faces.context.PartialViewContextImpl $ PhaseAwareVisitCallback visit GRAVE: com.sun.faces.mgbean.ManagedBeanCreationException: Невозможно создать статьи управляемого бина.Обнаружены следующие проблемы: - Пользователь свойства для статей управляемого компонента не существует.Проверьте, что существуют соответствующие методы получения и / или установки .

Это имеет ту же причину проблемы.

...