Доступ к компоненту JSF из класса, который не является ни сервлетом, ни компонентом

У меня есть компонент области сеанса JSF, и я храню информацию о текущем пользователе (вошедшем в систему) в этом компоненте. У меня также есть класс, который не является ни сервлетом, ни компонентом, это просто класс. Я хочу получить доступ к jsf bean-компоненту и получить текущую информацию о пользователе в классе. Я нашел решение для доступа сервлета к jsf bean, но не смог найти решение этой проблемы. Есть ли способ сделать это?

Благодарить!


person Ahmet DAL    schedule 29.03.2012    source источник


Ответы (1)


Если экземпляр упомянутого класса выполняется в том же потоке, что и поток HTTP-запросов, вызвавший FacesServlet, вы можете просто получить его с помощью FacesContext, а затем Application#evaluateExpressionGet() . См. также Получить управляемый компонент JSF по имени в любом классе, связанном с сервлетом

Если экземпляр упомянутого класса выполняется в другом потоке, вам необходимо заранее передать нужную информацию конструктору, методу класса или сохранить нужную информацию в каком-то общем источнике данных, который есть как в веб-приложении JSF, так и в автономном имеют доступ, например, к базе данных, файлу файловой системы локального диска или контексту JNDI. В зависимости от контекста и среды, CDI @Named+@Inject также может быть решением.

«Лучший способ» зависит от конкретного функционального требования, которое неясно из вопроса, поэтому я не могу указать правильный путь или привести какие-либо начальные примеры.

person BalusC    schedule 29.03.2012