在Liferay用户portlet中将自定义字段值添加为标记

时间:2016-06-13 09:44:51

标签: tags liferay liferay-6.2

我在liferay 6.2用户个人资料中有一个名为Skills的自定义字段(即当您点击我的帐户 - >详细信息部分时)。目前,此技能字段接受多个文本值并显示为纯文本条目。我想将每个技能显示为标签。是否有任何可用的UI组件来执行此任务?我在Liferay文档上查看了标签管理。他们建议从Admin->内容部分添加标签。但是,我想在用户在技能上输入值时动态创建标签。

2 个答案:

答案 0 :(得分:1)

如果我说得对,你想要用户输入的技能在门户网站中创建为标签。

为此,您需要创建自定义CreateAccountAction来创建用户帐户。

这是使用Liferay Extension Plugin项目完成的,也可以扩展liferay中的addUser()方法。

然后在扩展的addUser()方法中添加逻辑以创建AssetCategoryAssetVocabulary和标记

以下是创建技能标记的可能方法示例

protected AssetCategory addAssetCategory(long userId,
        long parentCategoryId, String title, long vocabularyId,
        ServiceContext serviceContext) throws Exception {

    Map<Locale, String> titleMap = new HashMap<Locale, String>();

    setLocalizedValue(titleMap, title);

    return AssetCategoryLocalServiceUtil.addCategory(userId,
            parentCategoryId, titleMap, null, vocabularyId, null,
            serviceContext);

}

protected AssetVocabulary addAssetVocabulary(long userId, String title,
        ServiceContext serviceContext) throws Exception {

    Map<Locale, String> titleMap = new HashMap<Locale, String>();

    setLocalizedValue(titleMap, title);

    return AssetVocabularyLocalServiceUtil.addVocabulary(userId,
            StringPool.BLANK, titleMap, null, null, serviceContext);
}

确保在调用方法之前使用serviceContext.setAddGroupPermissions(true)serviceContext.setAddGuestPermissions(true)以确保获得适当的权限

答案 1 :(得分:0)

我的方法是使用liferay ui资产标签选择器。它提供了用于分配和显示标签的UI组件

<label>Skills</label>
        <liferay-ui:asset-tags-selector
            className="<%= User.class.getName() %>"
            classPK="<%= selUser != null ? selUser.getUserId() : 0 %>"
        />