通过liferay.expando以编程方式向用户添加自定义字段



我正在尝试向com.liferay.portal.model.User添加字段,这是一个使用Expando的额外属性。有人能向我解释一下这个方法是如何添加字段的吗?因为文档没有太多描述。

private void addUserCustomAttribute(long companyId, ExpandoTable userExpandoTable, String attributeName, int type) throws PortalException, SystemException {
    ExpandoColumnLocalServiceUtil.getColumn(userExpandoTable.getTableId(), attributeName); //should be addColumn(long tableId, String name, int type) ???
} //and where can find type description couse i have very specific type, Map(String,Object) couse in ExpandoColumnConstants didn't see it

我从Liferay Expando Wiki的"添加用户自定义属性"中获得了这一点。

我什么时候该把这一切都说出来?在我的项目中该放在哪里?需要什么样的改变或一切都需要改变才能称之为

一些好的教程会很好,因为很难找到从0到结尾的东西,总是只找到一些没有解释的部分。

这个问题不是很清楚。但是,如果你只是想为你的User添加一个自定义属性,那么你可以在这里参考我的答案,并复制供你参考:

用户实体的自定义字段可以通过以下方式创建:
控制面板->Portal-><自定义字段>

通过编程可以创建如下:

user.getExpandoBridge().addAttribute("yourCustomFieldKey");

然后将值设置为:

user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField");

如果你的自定义字段已经存在,你可以这样检查:

if (user.getExpandoBridge().hasAttribute("yourCustomFieldKey")) { ... };

数据存储在前缀为"EXPANDO"的表中:

  • EXPANDOCOLUMN:存储自定义字段密钥和其他设置(包含tableId引用)
  • EXPANDODATA:存储键的自定义字段值(包含columnId和tableId引用)
  • 可扩展:存储要为其添加的救生实体(用户)自定义字段
  • EXPANDOROW:存储用户及其值之间的链接信息(包含tableId和userId引用)

希望这能有所帮助。

如果您的自定义字段是多值的,您可以使用以下内容:

String customVal = "yourCustomFieldValue";
user.getExpandoBridge().setAttribute("yourCustomFieldKey", new String[] {customVal }, false);

最后一个参数设置为"false"可以避免权限检查。

相关内容

  • 没有找到相关文章