2009-07-15 87 views
6

我在Liferay中添加了一個自定義用戶字段,併爲特定用戶設置了一個值。在Liferay中獲取自定義用戶字段值(expando)

如何以編程方式訪問此值?

如果我試試這個,我總是得到空:

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如何爲CSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.html中的用戶導出自定義字段(expando字段)時解決問題。如果您想要導出用戶並定義要包含在導出中的自定義字段,那麼您只會收到針對自定義字段的空值。看看this post看看如何解決這個問題。

+0

所有鏈接處於脫機狀態。你能在這裏報告你的解決方案? – 2015-07-07 12:52:43

1

我知道這有點晚,但對於那些仍在試圖弄清楚爲什麼自定義字段變爲null(儘管它在Liferay中顯式設置並可見)的情況下,請確保首先自定義字段具有權限設置正確(控制面板 - >自定義字段 - >用戶 - >選擇合適的自定義字段,然後點擊操作 - >權限)。默認情況下,所有者擁有所有權利,但就我而言,例如,我需要使用訪客帳戶(登錄過程中的用戶)的查看權限。希望這可以幫助。

相關問題