2016-02-01 1 views
0

У меня есть страница, в которой я развернутый портлет, в моем портлете я получить доступ к некоторому Params, используя URL-адрес в браузере, как:Liferay получения URL, где Params вопроса

localhost.com:8080/mypage?text=helloworld 

с использованием

PortalUtil.getOriginalServletRequest(request).getParameter("text") 

и все работает нормально.

Проблема возникает, когда есть некоторая задержка в view.jsp рендеринге (например, поставив некоторый отладчик в Java коде) и в это время визуализации портлет view.jsp вызывается снова, но на этот раз я не могу читать «текст» параметры из запроса

со стороны клиента URL-адрес вызывается следующим образом:

> http://localhost:8080/c/portal/render_portlet?p_l_id=92438&p_p_id=editor_WAR_heliumportlet&p_p_lifecycle=0&p_t_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=0&p_p_col_count=2&p_p_isolated=1&currentURL= 
> ... 

Этот URL не содержит мой параметров, я не могу найти ключ, из которого запускается этот URL. Любая помощь будет принята с благодарностью.

ответ

1

Liferay может передавать портлеты асинхронно, если они слишком долго загружаются (например, при подключении к отладчику). Это связано с значениями по умолчанию для render-weight and ajaxable, которые позволяют это. Измените их в liferay-portlet.xml.

Также обратите внимание, что выбор общих параметров HTTP, которые не относятся к именам, не является частью спецификации, поэтому Liferay не хочет перенаправлять параметр non-namespaced из исходного URL-адреса в портлет, когда он отображал его через AJAX , Другими словами: используя эту технику, вы, вероятно, готовитесь к еще большим неприятностям в будущем.

+0

если я перехожу ajaxable фальшь это полностью безопасно или это зависит от моей реализации? – fzkhan

+0

Да, это безопасно. Я не знаю никаких недостатков, кроме вашего отладчика (или медленного рендеринга), обязательно повлияет на время загрузки всей страницы. –

+0

спасибо, и если я использую параметры пространства имен, я не могу получить их в моем jsp-файле при вызове обновления браузера ?? – fzkhan

0

Поскольку портлеты могут совместно использовать одну и ту же страницу с другими портлетами, портлеты используют префикс или пространство имен.

Это пространство имен всегда может быть одинаковым для данного портлета, если этот портлет не является экземпляром. Или это пространство имен является переменным с целью быть уникальным для каждого экземпляра портлета.

Итак, параметры для портлета должны иметь префикс пространства имен.

Тогда это будет легко открыть с помощью параметров UTIL инструменты, такие как ..

ParamUtil.get(renderRequest, "paramName", "defValue"); 

Здесь Java Doc

С уважением

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