Доступ к FacesContext в приложении портала - PullRequest
1 голос
/ 30 августа 2011

Нам нужно получить определенную информацию от PortletRequest в нашем приложении на портале.Мы делаем это с помощью служебного метода внутри нашего приложения с портлетами.В этом методе Utility мы получаем доступ к FacesContext.getCurrentInstance().getRequest(), чтобы получить PortletRequest.Мы получаем доступ к этому методу Utility на нашем уровне DAO.У нас нет доступа к параметру запроса здесь.Иногда это работает, но иногда дает мне NullPointerException.Я нашел похожую ветку , которая объясняет это.Они упомянули, что если это часть одного и того же запроса, вы должны получить контекст.Для меня это часть того же запроса, но я не понимаю контекст.Можете ли вы помочь мне.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Если ваше приложение развернуто в отдельных файлах WAR / JAR, вполне вероятно, что используются разные загрузчики классов.У меня была похожая проблема, когда я пытался получить доступ к FacesContext в спящем архиве HAR на JBOSS5.Я придумал успешное решение с использованием рефлексии API.Взгляните на this .

Если вы объедините все приложение в один EAR, вы можете использовать один загрузчик классов для всего уха, но AFAIK, который является сервером приложенийконкретный.

С уважением

0 голосов
/ 31 августа 2011

Если вы получаете нулевой FaceContext от FacesContext.getCurrentInstance (), тогда FacesContext не был создан для этой темы / запроса.

Проходящие запросы поступают через точку входа без лиц? Например, запрос портлета Event или Resource? В этом случае FacesContext не будет создан.

Вместо того чтобы полагаться на статические методы и потоковое локальное хранилище для доступа к данным в вашем DAO, вам следует рассмотреть возможность извлечения того, что вам нужно, из PortletRequest и передачи его в стек. Неправильно смешивать артефакты уровня представления, такие как FaceContext или PortletRequest, с вашим уровнем DAO.

...