2011-04-15 13 views
2

編集モードとビューモードをサポートするライフレットポートレットを作成しようとしています。 liferayソースで提供されているデフォルトのMVCPortletを使用しています。編集モードでのLiferayポートレットの作成

<portlet> 
    <portlet-name>inline-portlet</portlet-name> 
    <display-name>inline</display-name> 
    <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class> 
    <init-param> 
     <name>edit-jsp</name> 
     <value>/edit.jsp</value> 
    </init-param> 
    <init-param> 
     <name>view-jsp</name> 
     <value>/view.jsp</value> 
    </init-param> 
    <expiration-cache>0</expiration-cache> 
    <supports> 
     <mime-type>text/html</mime-type> 
     <portlet-mode>view</portlet-mode> 
     <portlet-mode>edit</portlet-mode> 
    </supports> 
    <portlet-info> 
     <title>inline</title> 
     <short-title>inline</short-title> 
     <keywords>inline</keywords> 
    </portlet-info> 
    <security-role-ref> 
     <role-name>administrator</role-name> 
    </security-role-ref> 
    <security-role-ref> 
     <role-name>guest</role-name> 
    </security-role-ref> 
    <security-role-ref> 
     <role-name>power-user</role-name> 
    </security-role-ref> 
    <security-role-ref> 
     <role-name>user</role-name> 
    </security-role-ref> 
</portlet> 

私はそれを展開するとき、私たちは同じようレンチをクリックしたときである編集モードで作成された新しいタブを参照してくださいすることができませんが、次のように私はのportlet.xmlを設定していますアイコン。

設定がありませんか?私はすでにルートディレクトリにedit.jspとview.jspを持っています。ビューは一貫していますが、edit.jspが見つかりません。つまり、呼び出されていません。

これに関するご意見はありますか?

答えて

2

私はあなたがportlet.xmlで編集モードを追加したのLiferayでポートレットの編集モードが「優先」

2

と呼ばれていると思いますか?このような ?ポートレットで使用

<supports> 
    <mime-type>text/html</mime-type> 
    <portlet-mode>view</portlet-mode> 
    <portlet-mode>edit</portlet-mode> 
    <portlet-mode>help</portlet-mode> 
</supports> 

すべてのモードはportlet.xmlの設定のこの部分で明示的に設定する必要があり、あなたがビューモードよりも多くしたいすべてのポートレットにこれを行う必要があります。

また、あなたはそれが、少なくともデバッグのために有用である可能性だけPortletListener

を実装して、あなたのクラスでは、このようなモードハンドラを書くことができます。

public void handleResourceRequest(ResourceRequest request, 
      ResourceResponse response, 
      Window window) { 
// Switch the view according to the portlet mode 
if (request.getPortletMode() == PortletMode.EDIT){ 
    this.addWindow(editWindow); 
}else if (request.getPortletMode() == PortletMode.VIEW){ 
    window.setContent(viewContent); 
}else if (request.getPortletMode() == PortletMode.HELP) 
    window.setContent(helpContent); 
} 

また、管理者としてポートレットのアクセス権をチェックしましたか?彼らは何があってもそれを見なければならない。一方、通常のユーザーは、特定のポートレットのプリファレンスを設定する権限を持っている必要があります。

乾杯

2

編集モードでカスタム・ポートレットを作成する場合は、このモードでは、Liferayのデフォルトのポートレットのような構成アイコンの下にタブの下に表示されません。代わりに、あなたの編集モードのJSPは、Preferencesと呼ばれる新しいアイコンでアクセスできます。

ポートレット仕様では、VIEW、EDITおよびHELPモードのみが定義されていますが、カスタムポートレットモードをリストに追加できます。これはLiferayがデフォルトポートレットで行ったこととまったく同じです。これらは、CONFIGカスタム・ポートレット・モードを使用します。これを実装する方法の例については、this thread's last postをチェックしてください。

1

あなたが

com.liferay.portal.kernel.portlet.ConfigurationAction 

を実装するクラスを作成する必要があり、あなたは、ポートレット・ノードでliferay-portlet.xmlでそれを登録する必要があります。あなたのケースに依存

<portlet> 
    <portlet-name>MyPortlet</portlet-name> 
    <configuration-action-class>com.mydomain.MyConfigurationAction</configuration-action-class> 
</portlet> 
0

portlet.xml設定以外にも、あなたはMVCPortletを拡張することができ、あなたのクラスでdoViewdoEditprocessActionメソッドを実装する必要があります。 "Liferay in Action"本は良い例です。

または、Liferayのjspファイルとtaglib内のすべてのロジックを実行できます。 [編集]モードは[環境設定]をクリックすると利用できます。

関連する問題