(Portal開発読書ノート)Portletモード
11727 ワード
Portletは,ユーザが何をしているかをパターンで表す.
JSR−168は3種類のPortletモード,VIEW/EDIT/HELPモードを定義した.
1つのPortletインスタンスは、いつでも1つのモードの下にしか存在しないが、複数のモードをサポートするように構成することができるが、異なるモードは、あるPortletインスタンスの上に同時に作用してはならない(換言すれば、EDITモードであってもよく、VIEWモードに切り替えることができる)
モードの汎用性:
VIEWはデフォルトのモードで、Portletを表示します(サポートする必要があります)
EDITモードでは、PortletユーザーがPortletインスタンスをカスタマイズできます.
HELPモードPortletの使い方情報を表示
------
ただし、さまざまなPortal Serverでは、config、print、previewなどの仕様以外のモードを使用できます.
Portletモードのカスタマイズ方法
宣言方法:
portlet.xmlの要素のでは、このPortletがサポートするモード(カスタムモード)を指定します.
そして、Portletアプリケーションレベル、すなわちportlet.xmlのすべての要素の外側で、上記のprintモードなどのカスタムモードを宣言するには、次のように宣言する必要があります.
このカスタムportlet mode、例えばprintは、配備するportal serverによってサポートされる必要があります.
プログラム:
以上、宣言方式でもプログラミング方式でも、あるPortletのためにカスタムモードを開くことに成功しました.では、このモードの下でこのPortletの動作はどうでしょうか.コードで期待される動作を与えなければなりません.
例えばprintモードでは、印刷状態のドキュメントのプレビューを表示したいので、次のようにします.
------
誰がPortletモードを管理しますか?
portal管理もportlet管理も可能
portalによって管理されるモードを定義する場合は、portal serverがサポートし、次のように構成する必要があります.
portlet管理のportletモードを定義する場合は、次のように構成する必要があります.
JSR−168は3種類のPortletモード,VIEW/EDIT/HELPモードを定義した.
- public class PortletMode
- {
- public static final PortletMode VIEW = new PortletMode("view");
-
- public static final PortletMode EDIT = new PortletMode("edit");
-
- public static final PortletMode HELP = new PortletMode("help");
- private String _name;
-
- public PortletMode(String name)
- {
- if (name == null) {
- throw new IllegalArgumentException("PortletMode name can not be NULL");
- }
- this._name = name.toLowerCase(Locale.ENGLISH);
- }
-
- public String toString()
- {
- return this._name;
- }
-
- public int hashCode()
- {
- return this._name.hashCode();
- }
-
- public boolean equals(Object object)
- {
- if (object instanceof PortletMode) {
- return this._name.equals(((PortletMode)object)._name);
- }
- return false;
- }
- }
1つのPortletインスタンスは、いつでも1つのモードの下にしか存在しないが、複数のモードをサポートするように構成することができるが、異なるモードは、あるPortletインスタンスの上に同時に作用してはならない(換言すれば、EDITモードであってもよく、VIEWモードに切り替えることができる)
モードの汎用性:
VIEWはデフォルトのモードで、Portletを表示します(サポートする必要があります)
EDITモードでは、PortletユーザーがPortletインスタンスをカスタマイズできます.
HELPモードPortletの使い方情報を表示
------
ただし、さまざまなPortal Serverでは、config、print、previewなどの仕様以外のモードを使用できます.
Portletモードのカスタマイズ方法
宣言方法:
portlet.xmlの
- <portlet>
- <portlet-name>bookCatalog</portlet-name>
- <portlet-class>
- chapter03.code.listing.base.BookCatalogPortlet</portlet-class>
- <supports>
- <mime-type>text/html</mime-type>
- <portlet-mode>print</portlet-mode>
- ...
- </supports>
- ...
- </portlet>
そして、Portletアプリケーションレベル、すなわちportlet.xmlのすべての
- <portlet-app ...>
-
- <portlet>
- ...
- </portlet>
-
- <custom-portlet-mode>
- <portlet-mode>print</portlet-mode>
- </custom-portlet-mode>
- </portlet-app>
このカスタムportlet mode、例えばprintは、配備するportal serverによってサポートされる必要があります.
プログラム:
- if(PortletRequest.isPortletModeAllowed(new PortletMode("print"))) {
- actionResponse.setPortletMode(new PortletMode("print"));
- }
以上、宣言方式でもプログラミング方式でも、あるPortletのためにカスタムモードを開くことに成功しました.では、このモードの下でこのPortletの動作はどうでしょうか.コードで期待される動作を与えなければなりません.
例えばprintモードでは、印刷状態のドキュメントのプレビューを表示したいので、次のようにします.
- @RenderMode(name="print")
- public void showPrint(RenderRequest request,
- RenderResponse response) throws IOException, PortletException {
- showPrintableCatalog(request, response);
- }
------
誰がPortletモードを管理しますか?
portal管理もportlet管理も可能
portalによって管理されるモードを定義する場合は、portal serverがサポートし、次のように構成する必要があります.
- <custom-portlet-mode>
- <portlet-mode>search</portlet-mode>
- </custom-portlet-mode>
portlet管理のportletモードを定義する場合は、次のように構成する必要があります.
- <custom-portlet-mode>
- <portlet-mode>search</portlet-mode>
- <portal-managed>false</portal-managed>
- </custom-portlet-mode>