Ненужные сеансовые компоненты в JSF-фреймворках с поддержкой Ajax

Я заметил, что при использовании Ajax-тяжелых реализаций JSF 1.2, таких как Richfaces, вы каким-то образом вынуждены объявлять больше управляемых bean-компонентов, чем вы хотите, в рамках сеанса, чтобы это состояние могло поддерживаться в нескольких запросах Ajax; есть компоненты, которые просто перестанут работать.

Например, недавно я разработал это приложение, в котором мне пришлось объявить почти все мои компоненты поддержки JSF как Session Scoped, чтобы компонент «x» работал. Есть ли выход из этого, считаете ли вы это плохой практикой или это просто цена, которую нужно заплатить за наличие компонента с поддержкой Ajax в JSF 1.2?

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


person Jose Diaz    schedule 28.07.2010    source источник


Ответы (2)


Компоненты области видимости сеанса увеличивают использование памяти.

Другая доступная область видимости - это View Scope - это позволяет сохранять состояние bean-компонента между запросами, в то время как пользователь все еще находится в том же представлении.

Если вы используете JSF2, подумайте об использовании @ViewScope над именем bean-компонента:

    @ViewScope
    public class myBean{
     ..
     }

Если вы используете RichFaces и JSF1.2, рассмотрите возможность использования <a4j:keepAlive /> под <f:view> в представлении. Например:

<a4j:keepAlive beanName = "#{myBean}"/>

Дополнительную информацию см. здесь

person Dejell    schedule 28.07.2010

Другой вариант - использовать диалог Шва. Кроме того, я бы не сказал, что компоненты перестают работать, они все еще работают ... это ваша логика, которая должна поддерживать какое-то состояние на сервере.

person Max Katz    schedule 28.07.2010