В приложении JSF 1.2 можно ли переопределить управляемый компонент, обработанный сеансом, с подклассом?переопределение управляемого объекта с подклассом
структура класса
У меня есть контекст сеанса Управляемый компонент, MainViewMB
, и его подкласс, RestrictedViewMB
:
граней-config.xml
<managed-bean>
<managed-bean-name>mainViewMB</managed-bean-name>
<managed-bean-class>com.example.MainViewMB</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Постановка задачи
Выражение EL #{mainViewMB}
возвращает экземпляр MainViewMB
.
Я хотел бы переустановить имя #{mainViewMB}
с экземпляром RestrictedViewMB
, так что выражение EL #{mainViewMB}
возвращает экземпляр подкласса для остальной части сеанса.
Есть ли способ выполнить мою задачу?
Мотивируя пример
MainViewMB
обрабатывает GUI логику главной страницы приложения. Когда пользователь вводит приложение со специальной страницы входа в систему, мне нужно предоставить ограниченное упрощенное представление главной страницы. Переопределение некоторых свойств MainViewMB
в подклассе кажется очевидным решением.
Будет ли '# {mainViewMB}' работать? Требуется ли какое-либо другое действие для работы с EL? –
Да, иначе этот ответ был бессмыслен. Нет, он полностью отменяет любые существующие сеансовые атрибуты, включая управляемые bean-компоненты JSF. Вы, кстати, понимаете, как JSF создает и управляет бобами? JSF помещает управляемые bean-компоненты с узкоспециализированным сеансом точно так же на карте сеанса с управляемым именем компонента в качестве ключа. Вы здесь просто повторяете работу JSF, но затем с другим экземпляром. – BalusC
Да и нет. Я понимаю, как работает инъекция зависимостей EJB, и я понимаю области применения веб-приложений JSP/Servlet, но мое понимание JSF имеет несколько пробелов. –