2012-07-02 3 views
0

У меня есть и CDI bean UserController, аннотированный как @ConversationScope с атрибутом, названным как пользователь с открытыми геттерами и сеттерами.Почему два контроллера с размахом разговора не видят друг друга?

@ConversationScoped 
@Named("userController") 
public class UserController implements Serializable { 

    private User user; 

    @PostConstruct 
    public void init() { 
     this.user = new User(); 
    } 

    //getters and setters ommited... 

} 

У меня также есть второй класс с моими наблюдателями.

@ConversationScoped 
public class UserObservers implements Serializable { 

    @Inject private UserController controller; 

    public void createObserver(@Observes @MyQualifier MyEvent event) { 

     this.controller.getUser().setName("Test Name"); 

    } 
} 

Свойство пользователя заполняет мой интерфейс и я хочу, чтобы мой наблюдатель, чтобы изменить имя пользователя, но свойство пользователя всегда возвращает нуль.

Его как мой наблюдатель находится в другом разговоре.

Могу ли я иметь более одного разговора для одного сеанса пользователя?

Обновление: Когда я изменяю свое навигационное правило для перенаправления, код работает правильно.

+0

Вы можете обновить свой вопрос с помощью кода, который инициализирует пользователя? –

ответ

0

Возможно, вы не начали разговор? Затем вы получите новый разговор для каждого запроса. Включение разговора в оба компонента и отладка его состояния/идентификатора должно обязательно выявить проблему.

+0

Я сделал это. convers.isTransient() возвращает false, а session.getId() возвращает точный идентификатор моей беседы. –

Смежные вопросы