0

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

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

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

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

我试过了

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

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

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

4

1 回答 1

0

我最终改用了 javax.portlet.filter.RenderFilter 。方法签名看起来像这样

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

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

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

有点乱,但至少它有效。

于 2013-07-17T08:10:30.533 回答