私は天気のポートレットをウェルカムページに持ち、ユーザーはポートレットを設定して自分の都市を選択できます。ポートレットプリファレンスにユーザー情報を格納することは可能ですか?すべてのユーザーが1つの保存された都市を持つようにしますか?または、独自の(永続的な)サービスを開発せずにユーザー・ポートレット情報を保管する標準のワークフローは何ですか?Liferay:ポートレットのユーザー情報を保存する方法は?
THX
私は天気のポートレットをウェルカムページに持ち、ユーザーはポートレットを設定して自分の都市を選択できます。ポートレットプリファレンスにユーザー情報を格納することは可能ですか?すべてのユーザーが1つの保存された都市を持つようにしますか?または、独自の(永続的な)サービスを開発せずにユーザー・ポートレット情報を保管する標準のワークフローは何ですか?Liferay:ポートレットのユーザー情報を保存する方法は?
THX
ポートレットの設定は、ユーザーごとに異なります。
<liferay-portlet-app>
<portlet>
<portlet-name>ThePortletWitchUserSpecificPreferences</portlet-name>
<icon>/icon.png</icon>
<preferences-unique-per-layout>false</preferences-unique-per-layout>
<preferences-owned-by-group>false</preferences-owned-by-group>
</portlet>
...
</liferay-portlet-app>
二行<preferences-...
及び順序が略されている:それは、次の行でliferay-portlet.xml
に修飾することができます。詳細については、
参照: http://rutvijshah.wordpress.com/2009/12/06/user-specific-preferences-in-liferay/
それはPortletPreferenceのネイティブ関数ではありません:だけで文字列を許可し、残念ながらあなたは地図を渡すことはできませんsetValueメソッド。
はしかし、私はそれをハードコーディングするためのソリューションを参照してください、それは...
Long userId = ...... ;
String userValue = ..... ;
PortletPreferences prefs = request.getPreferences();
prefs.setValue("myConfig-"+userId, myUserVal);
prefs.store();
し、データを取得のための少し醜いです:
String userValue = prefs.getValue("myConfig-"+userId, defaultValue);
このソリューションが動作します、しかし、それはあなたが多数のユーザーを持っているということではありません。
ポートレットプリファレンスを使用すると、100K +のユーザーを持っている場合、それが爆発する、データベース内のXMLで保存されている:)あなたはこのソリューションが十分にきれいではないと思われる場合は、あなたとあなた自身の永続化メソッドを作成する必要があります
ServiceBuilder。
は1つのポートレットでユーザー固有の共有設定を組み合わせることで、私のLiferayのブログをチェックアウト:https://www.liferay.com/web/pmesotten/blog/-/blogs/user-specific-versus-shared-portlet-preferences-part-2 –
私はこのアプローチを提案しません - あなたが言ったように、それは多数のユーザーに拡大されません。本当に戻ってきて、後であなたに咬ませる。 – Yoshiya