2012-04-07 2 views
0

Это с MyFaces CODI JSF-модуль v1.0.1 для JSF 2.0Удаление боб из ViewAccessScope

У меня есть JSF страницы, которая использует вспомогательный компонент @ViewAccessScoped и это делает довольно много, что я хочу его, за исключением это не исчезнет, ​​когда я закончил с ним. Страница вызывается из другой страницы, как это:

<h:link outcome="/editLocation" target="_blank" 
     value="Edit Location: #{maintLocation.selected.id}" 
     disabled="#{!maintLocation.rowSelected}">        
      <f:param name="locationID" value="#{maintLocation.selected.id}" /> 
      <f:param name="closeOnUpdate" value="true" /> 
    </h:link> 

опыт пользователя является то, что страница editLocation всплывает в новом окне или новой вкладке, пользователь редактирует его, и по завершению он вызывает окна. close() если closeOnUpdate параметр установлен верно.

Это все работает. Но если пользователь редактирует еще один, местоположение ViewAccessScoped bean все еще существует, так что он не может быть повторно создан. Таким образом, он никогда не видит параметров и просто подходит к состоянию, в котором он находится с предыдущей записью.

Ручным удалением параметра windowid в окне URL-адреса браузера. Я могу получить новый бэк-файл. Есть ли способ удалить это из раздела h: link?

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

ответ

2

Я нашел ответ на the CODI Wiki page. Хотя я не подразумеваю использование CODI Conversations, реализация @ViewAccessScoped, похоже, накладывается поверх нее. Так что я мог бы сделать:

import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.Conversation; 

... 

@Inject private Conversation conversation; 

... 

conversation.close(); // when I have committed to close the window. 
+0

Как и другие CODI-Scopes @ViewAccessScoped - это особый тип разговора. –

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