我正在使用Liferay 6进行门户开发。 在Liferay下创建用户期间,我还需要添加一些额外的字段吗? 如果这是可能的,请告诉我吗?
请看这里附带的截图,也请告诉我这个表格会存储在数据库中吗?
答案 0 :(得分:12)
是的,您可以将Custom Attributes functionality用于liferay实体(在您的情况下为User),并且可以为每个liferay实体添加所需数量的额外字段。
用户实体的自定义字段可以通过以下方式创建:
控制面板 ->
门户网站 ->
自定义字段 ->
用户。
以编程方式可以创建如下:
user.getExpandoBridge().addAttribute("yourCustomFieldKey");
然后将值设置为:
user.getExpandoBridge().setAttribute("yourCustomFieldKey", "valueForCustomField");
如果您的自定义字段已经存在,您可以这样检查:
if (user.getExpandoBridge().hasAttribute("yourCustomFieldKey")) { ... };
数据存储在前缀为“EXPANDO”的表格中:
希望这有帮助。
答案 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);