2009-07-15 7 views
6

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

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

私はこれをしようとすると、私は常にnullを取得:

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

user.getExpandoBridge().getAttribute("customAttr")はタイプjava.IO.Serializableの値を返します。

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

しかし、カスタム属性は、(次のコードは、属性キーをプリントアウト)が存在しない:

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

どういうわけか、私はここでのポイントを欠場....

答えて

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; 
    } 

私は唯一のビューpermiを設定する必要がありましたカスタムexpando値でsson、すべてうまくいきました。

0

hereカスタムフィールド(expandoフィールド)をCSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.htmlのユーザー用にエクスポートした場合の問題の修正方法を確認してください。ユーザーのエクスポートを行い、エクスポートにカスタムフィールドを含める場合は、カスタムフィールドのnull値のみを受け取ります。この問題を解決する方法については、this postをご覧ください。

+0

すべてのリンクはオフラインです。あなたのソリューションはここに報告できますか? –

1

私はそれが少し遅いと知っていますが、なぜカスタムフィールドがnullになるのかを理解しようとしている人にとっては(Liferayでは明確に設定されていますが)、まずカスタムフィールドにコントロールパネル - >カスタムフィールド - >ユーザー - >適切なカスタムフィールドを選択し、アクション - >権限をクリックします。デフォルトでは所有者はすべての権利を持っていますが、私の場合、たとえば、Guestアカウント(ログイン中のユーザー)でViewアクセス許可が必要でした。お役に立てれば。