我正在尝试将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
答案 0 :(得分:0)
这听起来像是一个过于具体的计划,在portlet之外显示一些信息 - 但也远远超出了portlet规范。可能吗?是。它有局限性吗?是。
我没有尝试过,但我认为在开始评估portal_normal.vm
之前,你并不能保证所有portlet的所有渲染阶段都已完成。从技术上讲,只有在实际渲染时才需要完成它们。渲染不允许更改任何状态 - 并且你暗示在你的情况下可能会这样做 - 因为在渲染时会显示其他东西。
相反,假设您的主题具有页面上可用的DOM元素可能是有意义的。然后渲染一些操纵这个DOM元素的javascript。对主题的依赖性是相同的,但如果找不到DOM元素,也可以回退到某些默认渲染。
或者,如果您坚持自己的操作模式。您可能尝试通过servlet-session(portlet会话将无法帮助),因为您可以从portal_normal.vm访问HttpServletRequest。但请注意:访问HttpServletRequest是非标准的,而不是真正的门户思维