我在liferay 6.2用户个人资料中有一个名为Skills的自定义字段(即当您点击我的帐户 - >详细信息部分时)。目前,此技能字段接受多个文本值并显示为纯文本条目。我想将每个技能显示为标签。是否有任何可用的UI组件来执行此任务?我在Liferay文档上查看了标签管理。他们建议从Admin->内容部分添加标签。但是,我想在用户在技能上输入值时动态创建标签。
答案 0 :(得分:1)
如果我说得对,你想要用户输入的技能在门户网站中创建为标签。
为此,您需要创建自定义CreateAccountAction
来创建用户帐户。
这是使用Liferay Extension Plugin项目完成的,也可以扩展liferay中的addUser()
方法。
然后在扩展的addUser()
方法中添加逻辑以创建AssetCategory
,AssetVocabulary
和标记
以下是创建技能标记的可能方法示例
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 %>"
/>