У меня есть настраиваемое поле под названием «Навыки» в профиле пользователя liferay 6.2 (т. е. когда вы нажимаете раздел «Моя учетная запись» -> «Подробности»). На данный момент это поле «Навыки» принимает несколько текстовых значений и отображается как обычный текст. Я хочу показать, что каждый навык вводится как тег. Есть ли доступный компонент пользовательского интерфейса для выполнения этой задачи? Я проверил управление тегами в документации Liferay. Они предлагают добавить теги из раздела Admin->content. Однако я хочу создавать теги на лету, когда пользователь вводит значения в Skills.
добавить значения пользовательских полей в качестве тегов в пользовательский портлет Liferay
Ответы (2)
Если я правильно понял, вы хотите, чтобы навыки, которые вводит пользователь, создавались как теги на портале.
Для этого вам нужно будет создать Custom CreateAccountAction
для создания учетных записей пользователей.
Это делается с помощью проекта Liferay Extension Plugin, который также расширяет метод addUser()
в liferay.
затем внутри расширенного метода addUser()
вы добавляете логику для создания AssetCategory
, AssetVocabulary
и тегов
вот пример возможного метода создания тега Skill
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)
перед вызовом методов, чтобы гарантировать получение правильных разрешений.
ServiceContext serviceContext = ServiceContextFactory.getInstance(BlogsEntry.class.getName(), portletRequest);
- person Temire Emmanuel; 21.04.2017
мой подход заключается в использовании селектора тегов актива пользовательского интерфейса Liferay. Он предоставляет компонент пользовательского интерфейса для назначения и отображения тегов.
<label>Skills</label>
<liferay-ui:asset-tags-selector
className="<%= User.class.getName() %>"
classPK="<%= selUser != null ? selUser.getUserId() : 0 %>"
/>