将参数从Portlet doView发送到portal_normal.vm

时间:2013-07-02 07:26:14

标签: liferay liferay-velocity

我正在尝试将Portlet 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

1 个答案:

答案 0 :(得分:0)

这听起来像是一个过于具体的计划,在portlet之外显示一些信息 - 但也远远超出了portlet规范。可能吗?是。它有局限性吗?是。

我没有尝试过,但我认为在开始评估portal_normal.vm之前,你并不能保证所有portlet的所有渲染阶段都已完成。从技术上讲,只有在实际渲染时才需要完成它们。渲染不允许更改任何状态 - 并且你暗示在你的情况下可能会这样做 - 因为在渲染时会显示其他东西。

相反,假设您的主题具有页面上可用的DOM元素可能是有意义的。然后渲染一些操纵这个DOM元素的javascript。对主题的依赖性是相同的,但如果找不到DOM元素,也可以回退到某些默认渲染。

或者,如果您坚持自己的操作模式。您可能尝试通过servlet-session(portlet会话将无法帮助),因为您可以从portal_normal.vm访问HttpServletRequest。但请注意:访问HttpServletRequest是非标准的,而不是真正的门户思维