6

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

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

如果我尝试这个,我总是得到空值:

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() + "'");

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

4

3 回答 3

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 值上设置视图权限,一切正常。

于 2009-07-17T09:01:42.520 回答
3

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

于 2016-10-07T13:15:06.803 回答
0

在此处查看如何解决在 CSV http://liferay.bdedov.eu/2012/02/exporting-user-custom-fields-in-csv.html中为用户导出自定义字段(扩展字段)时的问题。如果您想要导出用户并定义要包含在导出中的自定义字段,那么您只会收到自定义字段的空值。查看这篇文章以了解如何解决此问题。

于 2012-02-23T23:31:00.240 回答