在Liferay中获取自定义用户字段值(expando)

时间:2009-07-15 11:55:32

标签: java liferay expando

我在Liferay中添加了自定义用户字段,并为特定用户设置了值。

如何以编程方式访问此值?

如果我试试这个,我总是得到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() + "'");

不知怎的,我在这里错过了这一点......

3 个答案:

答案 0 :(得分: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值上设置视图权限,一切正常。

答案 1 :(得分:1)

我知道它有点晚了,但是对于那些仍在试图弄清楚为什么自定义字段变为null(尽管它在Liferay中明确设置并可见)的人,请首先确保自定义字段具有权限正确设置(控制面板 - &gt;自定义字段 - &gt;用户 - &gt;选择适当的自定义字段,然后单击操作 - &gt;权限)。默认情况下,所有者拥有所有权限,但在我的情况下,例如,我需要具有Guest帐户的View权限(用户在登录过程中)。希望这会有所帮助。

答案 2 :(得分:0)

检查here如何在CSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.html中为用户导出自定义字段(expando字段)时解决问题。如果要导出用户并定义要包含在导出中的自定义字段,则只会为自定义字段接收空值。查看this post以了解如何解决此问题。