2015-03-06 6 views
0

Почему переменные доступны в одной части приложения, недоступной в другой части? У меня есть форма со многими вход, таких как:Переменные формы шва

<h:inputText styleClass="text autocomplete" id="eventName" 
       required="true" 
       value="#{cvEvent.eventName}"/> 

Переменная cvEvent объявлена ​​в классе EventManager как таковой:

@In(required=false,scope=ScopeType.CONVERSATION) 
@Out(required=false,scope=ScopeType.CONVERSATION) 
private Event cvEvent; 

Форма «представляется», как это:

<h:commandLink id="cmdConfirmEvent" styleClass="continue" 
        action="#{eventManager.confirmNewEvent}"> 
</h:commandLink> 

В этом методе eventManager.confirmedNewEvent я могу получить доступ к переменным cvEvent таким образом:

System.out.println("confirmNewEvent: " + cvEvent.getEventName()); 

Это все имеет для меня смысл. Я не понимаю, почему это не работает, когда я копирую форму на другую страницу. Я получаю:

WARNING: /home/Test3.xhtml @113,36 value="#{cvEvent.eventName}": Target Unreachable, identifier 'cvEvent' resolved to null 

javax.el.PropertyNotFoundException: /home/Test3.xhtml @113,36 value="#{cvEvent.eventName}": Target Unreachable, identifier 'cvEvent' resolved to null 

Я не могу понять, почему это происходит, или когда «сфера» переменную cvEvent сконфигурирована. Зачем это работать в одном месте, а не в другом?

+0

Когда вы открываете другую страницу, разговор еще активен? – DaveB

+0

Как проверить, продолжает ли разговор? – user1435866

ответ

0

Есть ли параметр coversationId или cId в URL-адресе? это обычно укажет текущий активный идентификатор сеанса, или вы можете просто вызвать «Conversation.instance(). getId()» в своем фоновом режиме для получения текущего номера разговора.

Если вы не находитесь в активном разговоре или она не распространяется от одной страницы к другой (разговор ID меняется), то переменная cvEvent будет потеряна, так как он живет в рамках рАЗГОВОР

Вы можете изменить ScopeType.CONVERSATION к SESSION как легко исправить или прочитать на «Распространение разговора по швам» сохраняет переменную живьем по переадресации