我正在使用 Liferay 6 进行门户开发。 在创建 Liferay 用户时,我需要添加一些额外的字段吗? 请告诉我这是否可能。
请查看附加的截图,并告诉我这将存储在数据库中的哪个表中?
是的,你可以使用自定义属性功能来增强Liferay实体(在你这种情况下是用户),并且可以为每个Liferay实体添加必要的额外字段。
通过以下方式可以为用户实体创建自定义字段:
控制面板 ->
门户 ->
自定义字段 ->
用户.
也可以按照以下程序方式创建:
user.getExpandoBridge().addAttribute("yourCustomFieldKey");
然后将值设置为:
user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField");
如果你的自定义字段已经存在,你可以像这样检查:if (user.getExpandoBridge().hasAttribute("yourCustomFieldKey")) { ... };
数据存储在以"EXPANDO"为前缀的表中:
希望这能有所帮助。
如果有人尝试从自定义字段中检索值并且遇到user.getExpandoBridge().getAttribute("yourCustomFieldKey")
方法返回null值的问题(即使您已经按照权限线程),我找到了另一种获取自定义字段值的方法:
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();
进行简单操作。
虽然不太美观,但能实现功能。
是的,您可以将自定义字段添加到用户实体,并向用户添加字段值:
user.getExpandoBridge().addAttribute(...);
Portal->自定义字段
或者在 liferay 启动时通过编程创建用户实体的自定义字段。ExpandoValue
表中。如果在添加或设置属性时遇到权限问题,请使用以下命令。
user.getExpandoBridge().addAttribute("yourCustomFieldKey",false);
user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField",false);