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

时间:2012-07-19 10:12:24

标签: liferay liferay-6 expando

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

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的Adding User Custom Attributes获取了这个。

我应该什么时候打电话给这一切?在我的项目中把它放在哪里?需要进行哪些更改或需要更改所有内容以进行调用。

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

2 个答案:

答案 0 :(得分:1)

问题不是很清楚。但是,如果您只是想为User添加自定义属性,那么您可以参考我的回答here并转载以供参考:

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

以编程方式可以创建如下:

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

然后将值设置为:

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

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

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

数据存储在前缀为“EXPANDO”的表格中:

  • EXPANDOCOLUMN:存储自定义字段键和其他设置 (包含tableId引用)
  • EXPANDODATA:存储密钥的自定义字段值(包含 columnId和tableId refrences)
  • EXPANDOTABLE:您要添加liferay实体(用户)的商店 自定义字段
  • EXPANDOROW:存储用户及其值之间的链接信息 (包含tableId和userId引用)

希望这有帮助。

答案 1 :(得分:0)

如果您的自定义字段是多值,则可以使用以下方法:

String customVal = "yourCustomFieldValue";

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

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