1

Liferayにデプロイされているポートレットのサービスビルダーによって作成されたテーブルに自動的にデータを入力する方法が必要です。どうすればそれを達成できますか?スタートアップフックを考えていましたが、特定のポートレットのサービスにアクセスできません。それで、ポートレット自体を介してそれを移入する方法はありますか?

4

2 に答える 2

1

破壊的な変更を行わないように管理している場合 (たとえば、スタートアップごとに入力しないように注意する)、StartupAction (またはスタートアップ フック) で変更できます。このフックをポートレット プロジェクトに追加できます。これは問題なく機能します。別の方法として、liferay-plugin-package.properties でポートレットに依存するフック (またはその逆) を宣言することもできます。これにより、サービスが利用可能になります。しかし、この目的のために、すべてを 1 つのポートレット プラグインにパッケージ化します。

そこに破壊的な変更がある可能性がある場合は、アップグレード アクションの方が安全です。これは 1 回だけ実行されることが保証されています。

例については、古い Sevencogs サンプルを参照してください (ポインターが必要な場合はお知らせください。それから取得します)。

更新: このようなフックをポートレット プロジェクトに含めるには、次の内容で WEB-INF/liferay-hook.xml を追加します (または、Liferay IDE のウィザードを使用してプロジェクトにフックを追加するだけです)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.1.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_1_0.dtd">

<hook>
    <portal-properties>portal.properties</portal-properties>
</hook>

また、次のオプションで WEB-INF/src/portal.properties を作成します。

application.startup.events=com.example.MyStartupAction

そしてもちろん、前述の起動アクションを作成し、拡張しますcom.liferay.portal.kernel.events.SimpleAction

于 2013-02-27T09:28:28.603 に答える