LifeRay 6.1 で基本的なポートレットを開発しようとしています。私はさまざまな MVC の実装に精通していますが、Liferay / Java ポートレット、特に実行パイプラインはやや混乱しています。
私が作業したほとんどの MVC フレームワークでは、単純な要求 > ルーター > コントローラー > ビューという前提で作業しました。ビューの選択は通常、コントローラ/アクションの命名規則、リクエストとともに渡されるパラメータ、またはコントローラ アクションに手動でロードされるパラメータに基づいています。
LifeRay MVCPortlet では、このようには機能しません。生成できる URL には少なくとも 2 種類あります。レンダリング URL とアクション URL です。
レンダリング URL は、私がコントローラーであると認識しているもの (MVCPortlet のサブクラス) を完全にバイパスしているようです。これらの URL は比較的簡単に生成でき、リクエストは期待されるビューをロードするように見えますが、すべての意図と目的を考慮して呼び出すことができれば、コントローラーを完全にバイパスし、モデルとは何の関係もありません。
<portlet:renderURL var="badminURL"><portlet:param name="mvcPath" value="/views/edit.jsp" /></portlet:renderURL>
アクション URL はコントローラーを通過し、アクションが呼び出されてから、mvc パスとして指定したものに関係なく、デフォルト ビューを使用してポートレットがレンダリングされます。
<portlet:actionURL var="adminURL" name="editSlide"><portlet:param name="mvcPath" value="/views/edit.jsp" /></portlet:actionURL>
クラス ツリーを読んでみると、ポートレット モードに応じて使用されるビューを定義するためにプロパティが使用されていることがわかります。すなわち
this.viewTemplate = "/views/edit.jsp";
this.editTemplate = "/views/edit.jsp";
init() が呼び出された後にこれを再度設定すると、actionURL 経由でアクセスしない場合にのみ効果があるようです。
したがって、私の質問はかなり基本的なものだと思います。ビューはどのように選択され、actionURL 経由で使用するビューを選択する方法です。また、実行パイプラインの概要は非常に役立ちます