2010-01-25 2 views
1

i интегрируйте приложение flex в приложение jsf-icefaces (в jspx-сайте со льдом: outputmedia-tag) и хотите получить доступ к тому же экземпляру компонента из flex с помощью удаленного , что jsf вводят.flex и jsf получают доступ к одному экземпляру bean-компонента

Я уже связываюсь с blazeds с java-bean. этот bean-компонент, как и все другие bean-компоненты, получает другие bean-компоненты путем вставки jsf, но когда я получаю доступ к bean-компоненту удаленно от flex, он не удерживает введенные bean-компоненты (например, локализатор и accesmanager, как в области сеансов), и я не могу подключиться к jsf session (FacesContext.getCurrentInstance() имеет значение null). это связано с тем, что flex создает новый экземпляр компонента, и это не тот же текущий экземпляр, что и jsf injection.

Я могу подключиться из flex к базе данных, создав новый менеджер сущностей в java-компоненте, но это не то, что я хочу, потому что это еще один менеджер объектов ... я хочу, чтобы они сохранялись и получали данные над bean-компонентом accessmanager ,

Я знаю exadel fiji и фламинго, но я не мог работать с fiji, потому что мое приложение jsf включает компоненты icefaces, а затем оно не работает с богачами, которые нужны fiji. и фламинго работают только с швом и пружиной jboss. это правильно?

Я также читал о интеграции spring-flex, но приложение jsf не создавалось с весной, и я не хочу интегрировать весну в такое большое приложение jsf. вчера я прочитал о интерфейсе FlexFactory. этот интерфейс я должен реализовать на своем собственном Factory и установить его в service-config.xml blazeds как завод read this. я по-прежнему реализую свою собственную фабрику, но я получаю только облако приложений, зависящее от контекста сервлета, которое я получаю через FlexContext.getServletContext(). getAttribute («Bean»); а не фасоли, не связанные с сеансом ...

Надеюсь, что есть возможность подключить винт flex и jsf ... спасибо!

+0

Дорогой Дэвид, может вы делитесь примером кода, как вам удалось интегрировать ледяные поверхности и блейды? – user284173

+0

Я отвечаю на ваш вопрос здесь: http://stackoverflow.com/questions/2361546/accessing-jsf-bean-from-blazeds-client/ – David

ответ

1

FacesContext.getCurrentInstance() является нулевым

Это будет только в том случае, когда текущий запрос не пропускали через FacesServlet. Другими словами, URL-адрес запроса не соответствовал url-patternFacesServlet. Это именно тот, который отвечает за создание экземпляра threadlocal FacesContext.

Но вы на самом деле не нуждаетесь в FacesContext здесь. Поскольку JSF работает только в верхней части API сервлета, вы также можете перейти на низкий уровень и использовать его для захвата управляемых сеансов. JSF хранит управляемые компоненты с учетом сеанса в качестве атрибутов HttpSession с управляемым именем компонента в качестве ключа.

Таким образом, если, например, иметь сеанс контекстными управляемый компонент с управляемым именем боба myBean и у вас есть HttpServletRequest в ваших руках, то вы также можете получить доступ к нему следующим образом:

MyBean myBean = (MyBean) request.getSession().getAttribute("myBean"); 
+0

спасибо, это действительно помогает! через FlexContext я получаю HttpRequest: HttpServletRequest hsr = FlexContext.getHttpRequest(); this.accessManager = (AccessManager) hsr.getSession().GetAttribute ("accessManagerBean"); Я не знаю, почему я не работал с ним! Я также использовал это в другом контексте ... но иногда я слепой после рабочего часа;) спасибо! – David

+0

Добро пожаловать. – BalusC

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