2009-07-15 6 views
6

J'ai ajouté un champ utilisateur personnalisé dans Liferay et défini une valeur sur un utilisateur spécifique.Obtention d'une valeur de champ utilisateur personnalisée (expando) dans Liferay

Comment puis-je accéder à cette valeur par programmation?

Si je tente, je reçois toujours nulle:

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

user.getExpandoBridge().getAttribute("customAttr") retourne une valeur de type java.IO.Serializable.

Peut-être que la distribution est incorrecte?

Mais l'attribut personnalisé existe (suivant code affiche la clé d'attribut):

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

D'une certaine façon me manque le point ici ....

Répondre

8

Il était un problème de sécurité ...

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

je ne devais définir les permi de vue sson sur la valeur expando personnalisée, et tout a bien fonctionné.

0

Vérifiez here comment résoudre le problème lorsque des champs personnalisés (champs expando) sont exportés pour les utilisateurs dans CSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.html. Si vous souhaitez effectuer une exportation d'utilisateurs et définir des champs personnalisés à inclure dans l'exportation, vous ne recevrez que des valeurs nulles pour les champs personnalisés. Découvrez this post pour voir comment résoudre ce problème.

+0

Tous les liens sont en mode hors connexion. Pouvez-vous signaler votre solution ici? –

1

Je sais qu'il est un peu tard, mais pour ceux qui essaient encore de comprendre pourquoi un champ personnalisé s'avère être nul (bien qu'il soit clairement défini et visible dans Liferay), assurez-vous d'abord que le champ personnalisé a le autorisations correctement définies (Panneau de configuration -> Champs personnalisés -> Utilisateur -> choisissez le champ personnalisé approprié et cliquez sur Action -> Autorisations). Par défaut, le propriétaire a tous les droits, mais dans mon cas, par exemple, j'avais besoin d'une autorisation Affichage avec un compte Invité (utilisateur en cours de connexion). J'espère que cela t'aides.

Questions connexes