4

私はカスタム ポートレットを開発しています (編集: MVCPortlet を拡張しています)。いくつかの例とチュートリアルを調べていると、doView(RenderRequest, RenderResponse) メソッドがオーバーライドされると、最後に少なくともこれが常に存在することがわかります。ライン:

super.doView(renderRequest, renderResponse);

またはこれ:

include(viewJSP, renderRequest, renderResponse);

これらのいずれも配置しない場合、ポートレットは何も表示しませんが、いずれかがトリックを行います。

どちらを使用する必要があるのか​​、ポートレットを機能させるためにそれらを追加する必要があるのはなぜなのかを知りたいです。

ありがとう!

4

2 に答える 2

8

MVCPortletしたがって、クラスを拡張する必要があります。どちらの呼び出しも、処理の完了後に JSPを組み込むために使用されます。doViewこのクラスのソース コードを見れば、フローが何であるかを理解できます。以下に私の説明を示します。

super.doView(renderRequest, renderResponse);

これには、デフォルトの JSP ie が含まれます。これは、次のようview.jspに構成した (または構成しなかった)portlet.xmlものです。

<init-param>
    <name>view-template</name>
    <value>/html/view.jsp</value>
</init-param>

このスーパー クラス メソッドはinclude(viewJSP, renderRequest, renderResponse);、最後にメソッドを呼び出すだけで何もしません。

include(viewJSP, renderRequest, renderResponse);

このメソッドには、パラメータに指定した JSP パスが含まれますviewJSP。したがって、この呼び出しでは、次のように、条件ごとに異なる JSP を含めるように指定できます。

if (isThisTrue) {
    include("/html/myCustomPortlet/view.jsp", renderRequest, renderResponse);
} else if (isThisTrueThen) {
    include("/html/myCustomPortlet/first/another_view.jsp", renderRequest, renderResponse);
} else {
    super.doView(renderRequest, renderResponse);
}

したがって、要件に応じて、上記のように 2 つまたは 2 つを組み合わせて使用​​できます。お役に立てれば。

于 2012-08-13T09:37:42.637 に答える
1

インクルードを使用すると、デフォルト ビューの代わりに使用する別の JSP を指定できます。したがって、カスタム ビュー ページを使用していない場合は、どちらでも機能します。

于 2012-08-10T17:24:50.117 に答える