問題
- Liferay JS ジェネレーターを介して JS ウィジェットを生成した後、「従来の」ポートレットの resource-actions/default.xml ファイルを介して可能であるような、カスタム権限を活用する明らかな方法はありません。
Environment
- Liferay DXP 7.1+
解決策
- カスタム権限機能は、従来のポートレットのように JS ウィジェットには実装されていません。 これを回避するには、いくつかの方法があります。
1. ウィジェットで「ボイラープレート」パーミッションを使用する
liferay-js-generator
ウィジェットですでに利用可能なパーミッションを使用できます。「ボイラープレート」は構成
>パーミッション
メニューから利用できます。2. 従来の NPM ポートレット バンドラーを使用する
既に利用可能な権限が十分でない場合は、代わりに「従来の」ポートレット構造を使用する必要があります。 MVC の場合は、単純に次のようにします。blade create -t mvc-portlet -v 7.3 -p com.liferay.docs.mvcportlet -c MyMvcPortlet my-mvc-portlet-project
一般的な JS フレームワークのプロジェクト スターターは、NPM メカニズムからも利用できます。次に例を示します。
blade create -t npm-react-portlet -v 7.3 -p com.liferay.npm.react -c MyNpmReactPortlet my-npm-react-portlet
または
blade create -t npm-angular-portlet -v 7.3 -p com.liferay.npm.angular -c MyNpmAngularPortlet my-npm-angular-portlet
3. liferay-js-generator ビルド プロセスをカスタマイズして機能
をサポートする liferay-js-generator ビルド プロセスをカスタマイズして、default.xml のサポートを追加することもできます。 これは カスタマイズの一部であり、Liferay サポート チームの支援が制限されていることに注意してください。そうは言っても、純粋な JavaScript ポートレット JAR ファイルは真の OSGi バンドルであるため、Liferay ポータルが理解する (そして純粋な JavaScript ポートレットのコンテキストで理にかなっている) 内部ロジックを開発できれば、それが考慮されます。 たとえば、
liferay-npm-bundler
の後に実行され、結果の JAR にいくつかの XML 構成ファイルを挿入するビルド ステップを実装することができ、理論上は機能する可能性があります。
追加情報
- 純粋な Liferay JS Generator プロジェクトのバックエンド機能の場合、ツールは現在、 ローカリゼーション および 構成 サービスのみを提供し、さらに package.json のセクションを提供します。ここでは、ポートレット ヘッダーが定義されているのと同じ方法で注入できます。 Java 注釈。 純粋な JavaScript ポートレットは、JavaScript コードの代わりにこれらの機能を実装する中間 Java モジュールによってポータルに登録されるため、上記以外の必要な機能はすべて新しい機能として実装する必要があります。