@Destroy Аннотация с бобами в области видимости - PullRequest
1 голос
/ 13 апреля 2011

У меня есть компонент Seam в области видимости страницы, и в нем есть метод void без параметров, аннотированный @Destroy, как показано ниже. Моя проблема в том, что метод destroy никогда не вызывается, даже если страница браузера изменена (т.е. область страницы закончена).

@Name("myPageBean")
@Scope(ScopeType.PAGE)
public class MyPageBean {

    @Destroy
    public void destroy {
        // Code runs when the component is destroyed.
    }

}

У вас есть идеи по этому вопросу?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 25 января 2014

Когда контекст страницы разрушается?

Область страницы неотличима от дерева компонентов пользовательского интерфейса.Поэтому контекст страницы уничтожается, когда JSF удаляет дерево компонентов пользовательского интерфейса (также называемое представлением) из сеанса.Однако, когда это происходит, Seam не получает обратный вызов, и поэтому метод @Destroy в компоненте с областью страницы никогда не вызывается.Если пользователь щелкает по странице или закрывает браузер, контекст страницы должен ждать, пока его очистка в JSF убивает представление, к которому он привязан.Обычно это происходит, когда заканчивается сеанс или если количество просмотров в сеансе превышает ограничение.Это ограничение устанавливается с помощью параметров контекста com.sun.faces.numberOfViewsInSession и com.sun.faces.numberOfLogicalViews в реализации Sun.Оба значения по умолчанию равны 15. Однако, как правило, лучше не связываться с этими значениями.

Область страницы следует рассматривать просто как способ сохранить данные, связанные с представлением, как средство поддержания целостности пользовательского интерфейса.составная часть.Этот фокус особенно актуален для таблиц данных, которые исторически были проблематичными.Я бы не использовал область страницы в качестве общего механизма хранения для случая использования или данных рабочего процесса.Хороший способ думать об этом как о кеше.

http://www.seamframework.org/42514.lace

0 голосов
/ 19 апреля 2011

Вы когда-нибудь использовали этот бин на странице? Если нет, то я думаю, что уничтожение не будет вызвано, потому что оно никогда не будет создано. или вы можете добавить @StartUp для принудительного создания компонента при инициализации Scope.

...