ポータル開発に Liferay 6 を使用しています。Liferay でユーザーを作成する際に、追加のフィールドも追加する必要があります?? これが可能かどうか教えてください??
ここに添付されているスクリーン ショットを参照してください。また、これがデータベースに格納されるテーブルを教えてください。
はい、 liferay エンティティ (この場合はユーザー) にカスタム属性機能 を使用でき、liferay エンティティごとに必要な数の追加フィールドを追加できます。
ユーザー エンティティのカスタム フィールドは、次の方法で作成できます
Control Panel ->
Portal ->
Custom Fields ->
User。
また、プログラムで次のように作成できます。
user.getExpandoBridge().addAttribute("yourCustomFieldKey");
次に、値を次のように設定します。
user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField");
カスタム フィールドが既に存在する場合は、次のように確認できます。
if (user.getExpandoBridge().hasAttribute("yourCustomFieldKey")) { ... };
データは、「EXPANDO」で始まるテーブルに保存されます。
お役に立てれば。
はい、カスタム フィールドをユーザー エンティティに追加し、フィールド値をユーザーに追加できます。
user.getExpandoBridge().addAttribute(...);
Portal->Custom Fields
コントロールパネルまたはliferayの開始時にプログラムで作成できるユーザーエンティティのカスタムフィールド。
データはExpandoValue
テーブルに格納されます。
誰かがカスタム フィールドから値を取得しようとして、メソッドによって返される null 値に問題がある場合に備えてuser.getExpandoBridge().getAttribute("yourCustomFieldKey")
(アクセス許可に関するスレッドに従っている場合でも)、カスタム フィールドの値を取得する別の方法を見つけました。
ExpandoTable table = ExpandoTableLocalServiceUtil.getDefaultTable(user.getCompanyId(), User.class.getName() );
ExpandoColumn column = ExpandoColumnLocalServiceUtil.getColumn(table.getTableId(), "yourCustomFieldKey");
ExpandoValue expandoValue = ExpandoValueLocalServiceUtil.getValue(table.getTableId(), column.getColumnId(), user.getUserId());
次に、簡単なことを行うことができます(フィールドがテキストの場合)expandoValue.getString();
あまりきれいではありませんが、仕事をしてください。
属性の追加または設定で権限の問題が発生した場合は、次のコマンドを使用します。
user.getExpandoBridge().addAttribute("yourCustomFieldKey",false);
user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField",false);
liferay のユーザー作成ページをカスタマイズできます。実際、ユーザー作成ページに表示するフィールドを決定できます。詳細については、こちらをご覧ください。