是否可以在Liferay中的“创建用户”下添加“额外字段”

时间:2012-04-13 07:18:38

标签: liferay liferay-6

我正在使用Liferay 6进行门户开发。 在Liferay下创建用户期间,我还需要添加一些额外的字段吗? 如果这是可能的,请告诉我吗?

请看这里附带的截图,也请告诉我这个表格会存储在数据库中吗?

enter image description here

5 个答案:

答案 0 :(得分:12)

是的,您可以将Custom Attributes functionality用于liferay实体(在您的情况下为User),并且可以为每个liferay实体添加所需数量的额外字段。

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

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

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 :(得分:3)

是的,您可以向用户实体添加自定义字段,并将字段值添加到用户:

user.getExpandoBridge().addAttribute(...);

您可以通过控制面板Portal->Custom Fields或programmaticaly在liferay开始时创建的用户实体的Custim字段。

数据将存储在ExpandoValue表格中。

答案 2 :(得分:3)

以防万一有人试图从自定义字段中检索值并且方法user.getExpandoBridge().getAttribute("yourCustomFieldKey")返回的空值出现问题(即使你遵循关于权限的线程),我找到了其他方法来检索自定义字段值:

ExpandoTable table = ExpandoTableLocalServiceUtil.getDefaultTable(user.getCompanyId(), User.class.getName() );
ExpandoColumn column = ExpandoColumnLocalServiceUtil.getColumn(table.getTableId(), "yourCustomFieldKey");
ExpandoValue expandoValue = ExpandoValueLocalServiceUtil.getValue(table.getTableId(), column.getColumnId(), user.getUserId());

然后你可以做一个简单的(如果字段是文本)expandoValue.getString();

不太好看,但要做好工作。

答案 3 :(得分:0)

liferay中的用户创建页面可以自定义。您可以确定在用户创建页面中显示哪些字段。的 More about this in here.

答案 4 :(得分:0)

如果在添加或设置属性时遇到权限问题,请使用以下命令。

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