0

ウェルカム ページがある uPortal JSR-268 Spring MVC ポートレットがあります。ランディング ページのすべてのリンクは、次のページを最大化モードでレンダリングします。これはすべての内部リンクに当てはまります。

私がやりたいことは、ユーザーが他のページにいる場合にウェルカム ページをレンダリングし、WindowState を最大化から変更することです。これは RenderRequests のみに適用されます。ここでは、他のタイプのリクエストについては気にしません。

ユーザーは、「ダッシュボードに戻る」リンクを使用するか、ポータルのウィンドウ ボタンをクリックするか、何をしているかわかっている場合は URL を操作して、ユーザー インターフェイスから WindowState を変更できます。

リクエスト パラメータを調べることで、ウェルカム ページのリクエストを特定できます。

私が試してみました

  • インターセプターですが、ここでできることは false を返すことだけです。その結果、ポートレットにコンテンツがレンダリングされません。これは受け入れられません。
  • インターセプターからエラーをスローします。カスタム エラー ページを表示できるので、これは小さな改善ですが、ウェルカム ページをレンダリングすることはできません。

WindowState を最大化に戻して、最初に要求されたページにリダイレクトすることもできます。ポートレットはリダイレクトをサポートしていないようです。

ActionRequests を扱っている場合、Interceptor から ActionResponse に RenderParameter を設定して、ウェルカム ページをレンダリングすることができます。ただし、RenderRequests に相当するものはないようです。何か不足していますか?

4

1 に答える 1

0

I ended up using a javax.portlet.filter.RenderFilter instead. The method signature looks like this

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

That gives me access to the renderRequest for a start. The next problem is that you can't set parameters in the RenderRequest.

I solved this by extending RenderRequest and overriding getParameter so it would return the correct parameter to route the request to the correct controller. This allowed me to call the next link in the chain with the wrapped request.

A bit messy but it works at least.

于 2013-07-17T08:10:30.533 に答える