2009-07-15 14 views
6

Ho aggiunto un campo utente personalizzato in Liferay e impostato un valore su un utente specifico.Ottenere un valore di campo utente personalizzato (expando) in Liferay

Come posso accedere a questo valore a livello di programmazione?

Se provo questo, ho sempre arrivare nullo:

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

user.getExpandoBridge().getAttribute("customAttr") restituisce un valore di tipo java.IO.Serializable.

Forse il cast qui è sbagliato?

Ma l'attributo personalizzato esiste (codice seguente stampa la chiave di attributo):

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

In qualche modo mi manca il punto qui ....

risposta

8

E 'stato un problema di sicurezza ...

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

ho avuto solo per impostare i permi vista sson sul valore expando personalizzato, e tutto ha funzionato bene.

0

Controllare here come risolvere il problema quando i campi personalizzati (campi expando) vengono esportati per gli utenti in CSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.html. Se si desidera esportare utenti e definire campi personalizzati da includere nell'esportazione, si ricevono solo valori nulli per i campi personalizzati. Controlla this post per vedere come risolvere il problema.

+0

Tutti i collegamenti sono offline. Puoi segnalare la tua soluzione qui? –

1

So che è un po 'tardi, ma per coloro che stanno ancora cercando di capire perché un campo personalizzato risulta nullo (anche se è chiaramente impostato e visibile in Liferay), assicurati prima che il campo personalizzato abbia il autorizzazioni impostate correttamente (Pannello di controllo -> Campi personalizzati -> Utente -> selezionare il campo personalizzato appropriato e fare clic su Azione -> Autorizzazioni). Per impostazione predefinita, il proprietario ha tutti i diritti, ma nel mio caso, ad esempio, avevo bisogno di un permesso di visualizzazione con un account Guest (utente nel processo di accesso). Spero che questo ti aiuti.