Portlet欢迎页面可以出现在普通的WindowState中,其他页面应该只出现在最大化的WindowState中

时间:2013-07-04 10:01:24

标签: portlet interceptor spring-portlet-mvc

我有一个uPortal JSR-268 Spring MVC portlet,它有一个欢迎页面。着陆页上的所有链接都以最大化模式呈现下一页,所有内部链接都是如此。

我想要做的是,如果用户在任何其他页面上,则呈现欢迎页面,并将WindowState从最大化更改。这仅适用于RenderRequests,我不关心此处的任何其他类型的请求。

用户可以使用“返回仪表板”链接通过用户界面更改WindowState,方法是单击门户上的窗口按钮,或者,如果他们知道他们在做什么,则通过操作URL。

我可以通过检查请求参数来识别欢迎页面的请求。

我试过了

  • 一个拦截器,但我似乎能够在这里做的就是返回false, 这导致没有内容在portlet中呈现。这是 不能接受。
  • 从拦截器中抛出错误。这是一个很小的改进,因为我可以显示自定义错误页面,但它仍然不允许我呈现欢迎页面。

将WindowState设置回最大化时,重定向到最初请求的页面也是可以接受的。 Portlet似乎不支持重定向。

如果我正在处理ActionRequests,我可以在拦截器的ActionResponse上设置一个RenderParameter,这会导致欢迎页面被渲染。但是,似乎没有RenderRequests的等效项。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我最终使用了javax.portlet.filter.RenderFilter。方法签名如下所示

public void doFilter(RenderRequest request, RenderResponse response,
   FilterChain chain) throws IOException, PortletException

这使我可以开始访问renderRequest。下一个问题是您无法在RenderRequest中设置参数。

我通过扩展RenderRequest并覆盖getParameter来解决这个问题,因此它会返回正确的参数来将请求路由到正确的控制器。这允许我用包装的请求调用链中的下一个链接。

有点乱,但至少可以起作用。