Отправить параметр из Portlet doView в portal_normal.vm

Я пытаюсь отправить параметр из функции портлета doView в portal_normal.vm

Является ли это возможным? Как я могу отправить и получить его?


Извините, но я не вижу способа сделать это через запрос.

В doView я написал

HttpServletRequest httpRequest = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest));
        httpRequest.setAttribute("hola", "hola");

И на обычном портале я пробовал:

#set ($holas =$request.get('attributes').get('hola'))
#set ($holas2 = $request.getSession().getAttribute("hola"))

$holas
$holas2

но Velocity показывает только $holas $holas2


person Antonio mc    schedule 02.07.2013    source источник


Ответы (1)


Это звучит как слишком конкретный план отображения некоторой информации за пределами портлета, но также и далеко за пределами спецификации портлета. Является ли это возможным? Да. Есть ли у него ограничения? Да.

Я не пробовал, но утверждаю, что у вас нет никакой гарантии, что все этапы рендеринга всех портлетов будут завершены до того, как portal_normal.vm начнет оцениваться. Технически необходимо закончить их только тогда, когда они действительно собираются отрендериться. Рендеру не разрешено изменять какое-либо состояние - и вы подразумеваете, что в вашем случае это может быть, потому что при рендеринге будет отображаться что-то еще.

Возможно, имеет смысл предположить, что в вашей теме есть какой-то элемент DOM, доступный на странице. Затем отрисуйте некоторый javascript, который манипулирует этим элементом DOM. Зависимость от темы такая же, но вы также можете вернуться к некоторому рендерингу по умолчанию, если не можете найти элемент DOM.

В качестве альтернативы, если вы настаиваете на своем режиме работы. вы можете попробовать пройти сеанс сервлета (сеанс портлета не поможет), поскольку у вас есть доступ к HttpServletRequest из portal_normal.vm. Однако будьте осторожны: доступ к HttpServletRequest нестандартен и не совсем портальный.

person Olaf Kock    schedule 02.07.2013