Сеанс JSF ManagedBean создается при каждом запросе - PullRequest
1 голос
/ 10 ноября 2011

В моем приложении есть @ManagedBean с аннотацией @sessionScoped.

Проблема в том, что для каждого запроса вызывается открытый конструктор no arg, поэтому мои поля сбрасываются, и логика моей модели уходит в пространство.

Я пытался собрать и очистить, сбросить GlassFish, но все же конструктор бина get вызывается при каждом запросе. У меня также есть файл face-config.xml для управления навигацией по страницам.

Я мог бы решить эту проблему, изменив выделение bean-компонента внутри face-config, теперь он работает ...

Есть идеи, почему это происходит? Если я удаляю face-config, проблема не исчезнет.

Спасибо всем!

1 Ответ

5 голосов
/ 10 ноября 2011

Это может произойти, если @SessionScoped относится не к пакету javax.faces.bean, а к совершенно другому API, например, к пакету javax.enterprise.context.Дважды проверьте ваш импорт и будьте осторожны с автозаполнением IDE.Среды IDE имеют тенденцию сортировать автопредставления по имени пакета, и поэтому javax.enterprise.context будет отображаться как первая опция.

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class Bean {
    // ...
}

Если вы не используете аннотацию области действия javax.faces.bean в @ManagedBean, то bean-компонентпо умолчанию будет @NoneScoped, что означает, что оно построено на каждой #{bean} оценке EL.

См. также:

...