Как получить параметр запроса url изнутри бина LIferay / IceFaces / JSF - PullRequest
2 голосов
/ 20 сентября 2011

Возможен ли портлет для чтения параметра запроса на окружающей его странице?

Например, URL страницы, на которой находится портлет: http://example.com/mygroup/mypage?foo=bar Можно ли прочитать "foo"параметр из портлета, который находится на этой странице?

Контейнер портлета - Liferay 6.0.5.

PS

Я уже пробовал:

com.liferay.portal.util.PortalUtil.getOriginalServletRequest(com.liferay.portal.util.PortalUtil.getHttpServletRequest((javax.portlet.PortletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest())).getParameter("foo")

но я всегда получаю нулевое значение для productId

Спасибо!

Ответы [ 4 ]

1 голос
/ 08 октября 2012

Следующий код поможет:

javax.portlet.PortletRequest pr = (javax.portlet.PortletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("javax.portlet.request");
java.lang.reflect.Method method = pr.getClass().getMethod("getOriginalHttpServletRequest");
HttpServletRequest httpServletRequest = (HttpServletRequest)method.invoke(pr, new Object[] {});
return httpServletRequest.getParameter(YOUR_PARAM_KEY);
1 голос
/ 21 сентября 2011

Вы пробовали

ExternalContext.getRequestParameterMap()

0 голосов
/ 08 июля 2013

, если вы находитесь в среде JSF, попробуйте это:

String param = LiferayFacesContext.getInstance().getRequestQueryStringParameter("foo");
0 голосов
/ 01 сентября 2012

При частичной отправке ajax-мост icefaces (который заменяет обычный мост портлета jsf) избегает обычного запроса действия / рендеринга портала, напрямую связываясь с блокирующим сервлетом (чтобы избежать аннулирования других портлетов области запроса и вообщеБыть быстрее).Из-за этого все те параметры / атрибуты, которые установлены в обычном портальном запросе, не устанавливаются в ajax.Они устанавливаются только в первоначальном запросе типа GET для этой страницы.Итак, на самом деле вам нужно сохранить эти параметры в @PostConstruct или другом методе вашего управляющего компонента, а затем использовать их позже.(В любом случае они не изменятся при частичной отправке, верно?).Имейте в виду, однако, что это не будет работать, если вы используете IceFaces в сочетании с Spring (и их EL Resolver, так как это исключает расширенную область ваших запросов).

...