Как получить сеанс Liferay в пользовательском сервлете? - PullRequest
6 голосов
/ 11 ноября 2011

Я написал собственный сервлет в Liferay и хочу знать, какая пользовательская страница вызывает его, и знать другие параметры, такие как theme.Но атрибуты запроса и поля сеанса - все нули.

Как сделать пользовательский сервлет для получения запроса, как если бы это делал портлет?

Спасибо

PS Я не хочу использовать это решение https://www.everit.biz/web/guest/blog/-/blogs/getting-current-liferay-user-in-a-standalone-webapp?_33_redirect=/web/guest/blog

который читает куки вручную.Я хочу делать то, что делает Liferay, то есть, используя его API.Возможно ли это?

Обновление 1.

У меня есть портлет и сервлет в одной WAR.Я могу знать, кто я (вошел в систему) из JSP портлета следующим образом:

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();

ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);

themeDisplay.getUser()

Теперь я хочу сделать то же самое с сервлетом.Возможно ли это?

Я работаю в eclips, которая развертывается автоматически.

1 Ответ

3 голосов
/ 11 ноября 2011

Вы должны либо подражать тому, что Liferay делает при обработке запроса портлета (не рекомендуется), либо, альтернативно, поместить свой код сервлета в портлет - это может быть «обработкой ресурсов» портлета - здесь вы получаете полный доступ к HTTP-запрос и может делать все самостоятельно в отношении типов данных, передаваемых в потоке.

Я бы порекомендовал это, поскольку его будет значительно проще обновить. Обработчик ресурсов портлетов очень похож на сервлеты с логической точки зрения. Могут быть и другие (более рекомендуемые) варианты, но это то, что мне приходит в голову для такого типа проблем.

...