У меня есть следующее требование относительно тегов и пользователей.
- Теги следует искать на основе адреса электронной почты, указанного в текстовом поле.
- Теги, доступные для конкретного пользователя, которые будут отображаться на основе адреса электронной почты после поиска.
- Должна быть возможность добавлять/изменять несколько тегов для пользователей на основе их идентификатора электронной почты, указанного в текстовом поле.
Я сделал кодирование для добавления тегов пользователям следующим образом
JSP:
<portlet:actionURL var="addTagsURL" name="addTags"/>
<aui:form action="<%=addTagsURL%>" method="post" name="submit">
<aui:input name="emailAddress" id="emailAddress" label="Email Address">
<aui:validator name="required" />
</aui:input>
<liferay-ui:asset-tags-error />
<aui:input name="tags" type="assetTags" />
<div>
<liferay-ui:asset-tags-selector />
</div>
<aui:input type="Submit" name="Submit" value="Submit"></aui:input>
</aui:form>
Класс действия:
public void addTags(ActionRequest actionRequest,ActionResponse actionResponse){
String emailAddress=ParamUtil.getString(actionRequest, "emailAddress");
log_.info("user email address from form========>"+emailAddress);
ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
User user;
try {
user = UserLocalServiceUtil.getUserByEmailAddress(themeDisplay.getCompanyId(), emailAddress);
ServiceContext serviceContext = ServiceContextFactory.getInstance(actionRequest);
AssetEntryLocalServiceUtil.updateEntry(user.getUserId(), themeDisplay.getScopeGroupId(),"com.liferay.portal.model.User", user.getUserId(),null, serviceContext.getAssetTagNames());
log_.info("user email address========>"+user.getEmailAddress());
log_.info("UserId is=========>"+user.getUserId());
String tags[]=serviceContext.getAssetTagNames();
log_.info("Tags are====>"+tags.toString());
} catch (PortalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
С помощью приведенного выше кода у меня может быть пользовательский интерфейс для добавления тегов пользователям. Но если я хочу удалить теги для конкретного пользователя, как я могу это сделать, и если есть какие-либо API или теги, пожалуйста, помогите мне.
Для извлечения тегов на основе адреса электронной почты, указанного в текстовом поле, я просто использую концепцию ServiceBuilder, запрашивая таблицы форм AssetEntry_AssetTags. Правильно ли отображать теги, доступные для данного адреса электронной почты.