6

Liferayにカスタムユーザーフィールドを追加し、特定のユーザーに値を設定しました。

プログラムでこの値にアクセスするにはどうすればよいですか?

これを試してみると、常にnullになります。

String customAttr = (String)user.getExpandoBridge().getAttribute("customAttr");

user.getExpandoBridge().getAttribute("customAttr")Typeの値を返しますjava.IO.Serializable

たぶんここのキャストは間違っていますか?

ただし、カスタム属性は存在します(次のコードは属性キーを出力します)。

for (Enumeration<String> attrs = user.getExpandoBridge().getAttributeNames(); attrs.hasMoreElements();)
    _log.info("elem: '" + attrs.nextElement() + "'");

どういうわけか私はここでポイントを逃します....

4

3 に答える 3

8

それはセキュリティの問題でした...

com.liferay.portlet.expando.service.impl.ExpandoValueServiceImpl.getData(String className, String tableName, String columnName, long classPK)

    if (ExpandoColumnPermission.contains(
            getPermissionChecker(), column, ActionKeys.VIEW)) {

        return expandoValueLocalService.getData(
            className, tableName, columnName, classPK);
    }
    else {
        return null;
    }

カスタムexpando値にビュー許可を設定するだけで、すべてが正常に機能しました。

于 2009-07-17T09:01:42.520 に答える
3

少し遅れていることは承知していますが、カスタムフィールドがnullであることが判明する理由をまだ理解しようとしている場合は(Liferayで明確に設定されて表示されますが)、最初にカスタムフィールドに適切に設定された権限があることを確認してください( [コントロールパネル]->[カスタムフィールド]->[ユーザー]->適切なカスタムフィールドを選択し、[アクション]->[権限]をクリックします。デフォルトでは、所有者がすべての権限を持っていますが、私の場合、たとえば、ゲストアカウント(ログイン中のユーザー)での表示権限が必要でした。お役に立てれば。

于 2016-10-07T13:15:06.803 に答える
0

カスタムフィールド(拡張フィールド)がCSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.htmlでユーザーにエクスポートされる場合の問題を修正する方法については、こちらを確認してください。ユーザーのエクスポートを行い、エクスポートに含めるカスタムフィールドを定義する場合は、カスタムフィールドのnull値のみを受け取ります。これを修正する方法については、この投稿を確認してください。

于 2012-02-23T23:31:00.240 に答える