Struts操作ラッパーからMVCコマンドへの変換

Liferayポータル6.1および6.2では、開発者はフックおよびStrutsActionラッパーを使用して、ポータルおよびポートレットStruts操作をカスタマイズできました。 たとえば、ログインポートレットのログイン操作をオーバーライドしたフックのliferay-hook.xmlファイルには、次のエントリがありました。

<struts-action>
    <struts-action-path>/login/login</struts-action-path>
    <struts-action-impl>
    com.liferay.sample.hook.action.ExampleStrutsPortletAction
    </struts-action-impl>
</struts-action>

liferay-hook.xmlには、Strutsマッピングと、デフォルトのログイン操作をオーバーライドする新しいクラスが含まれています。

ラッパーは、Struts操作がそれぞれポータルであるかポートレット操作であるかに応じて、 BaseStrutsActionまたはBaseStrutsPortletActionを拡張できます。

7.0以降このメカニズムはStruts操作を使用しなくなったため、ほとんどのポートレットに適用されなくなりましたが、代わりにLiferayMVCCommandを使用します。

このチュートリアルでは、既存のStrutsActionラッパーをMVCCommandに変換する方法を示します。

古いラッパーをMVCコマンドに変換する

StrutsActionラッパーをMVCCommandへ変換することは、思うよりも簡単です。

レビューとして、レガシーStrutsActionラッパーはprocessActionrender、およびserveResourceなどのほか、たとえ1つのメソッドのみがカスタマイズされていた場合であっても、すべてのメソッドを実装しました。 これらの各メソッドは、異なるクラスを使用して個別にカスタマイズできるため、ロジックをよりシンプルで簡単に保守できるようになりました。 StrutsActionラッパーでカスタマイズしたメソッドに応じて、以下に示す適合したMVCCommandインターフェイスを使用する必要があります。

StrutsActionラッパーの例については、ExampleStrutsPortletActionクラス をご覧ください。 オーバーライドされた操作に応じて、ユーザーは異なるMVCCommandを使用する必要があります。 この例では、操作とレンダリングがオーバーライドされているため、新しいパターンに移行するには、 MVCActionCommandMVCRenderCommandの2つのクラスを作成します。

次に、MVCCommandが使用するマッピングを決定します。

MVCコマンド URLのマッピング

ほとんどの場合、MVCCommandマッピングは、従来のStruts操作で定義されたマッピングと同じです。

最初のログインの例をもう一度使用すると、struts-action-pathマッピングと/login/loginが、Liferay DXP 7.1のMVCCommandマッピングと同じままですが、マッピングの一部が変更されている場合があります。 Liferay DXPのソースコードをチェックして、正しいマッピングを決定することをお勧めします。

ポートレットURLタグを使用してMVCコマンドURLにマップします。

  • MVCRenderCommandURLは、mvcRenderCommandNameパラメーターに入ります。 例:

    <portlet:renderURL var="editEntryURL">
        <portlet:param name="mvcRenderCommandName" value="/hello/edit_entry" 
        />
        <portlet:param name="entryId" value="<%= String.valueOf(
        entry.getEntryId()) %>" />
    </portlet:renderURL>    
    
  • MVCActionCommandURLは、actionURLタグname属性またはパラメーターActionRequest.ACTION_NAMEに入ります。 例:

    <portlet:actionURL name="/blogs/edit_entry" var="editEntryURL" />
    
  • MVCResourceCommandURLは、resourceURLタグid属性に入ります。 例:

    <portlet:resourceURL id="/login/captcha" var="captchaURL" />
    

この情報を取得したら、次のMVCCommandチュートリアルにある手順に従って、 MVCCommandをオーバーライドできます。

ここまで、StrutsActionWrapperMVCCommandに変換する方法について学びました。

関連トピック

MVCコマンドのオーバーライド

Liferay MVCポートレット

プラグインの依存関係の解決

依存関係の設定方法

Liferay Mavenビルドのアップグレード

« ポータルプロパティとイベント操作フックのアップグレード6.2テーマのアップグレード »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています