Как добавить/обновить/просмотреть теги для пользователя в Liferay

У меня есть следующее требование относительно тегов и пользователей.

  • Теги следует искать на основе адреса электронной почты, указанного в текстовом поле.
  • Теги, доступные для конкретного пользователя, которые будут отображаться на основе адреса электронной почты после поиска.
  • Должна быть возможность добавлять/изменять несколько тегов для пользователей на основе их идентификатора электронной почты, указанного в текстовом поле.

Я сделал кодирование для добавления тегов пользователям следующим образом

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. Правильно ли отображать теги, доступные для данного адреса электронной почты.


person Kona Laxman Deepak    schedule 31.03.2016    source источник


Ответы (1)


Вы должны иметь возможность получать теги активов, связанные с пользователем, с помощью приведенного ниже метода API. com.liferay.portlet.asset.service.AssetTagLocalServiceUtil

public static java.util.List<com.liferay.portlet.asset.model.AssetTag> getTags( long classNameId, long classPK)

Где classpk будет userId, а classNameId будет иметь класс User.

Надеюсь это поможет.

person Pankaj Kathiriya    schedule 31.03.2016
comment
Спасибо. Да, это помогло мне получить теги, связанные с пользователем. Есть ли у вас идеи изменить теги для пользователя, например удалить существующие теги и добавить новые, затем нажмите «Сохранить». - person Kona Laxman Deepak; 01.04.2016
comment
@LaxmanDeepak Вы должны обновить свой вопрос или закрыть этот вопрос, приняв его и создав новый вопрос с подробностями того, что вы уже пробовали? - person Pankaj Kathiriya; 01.04.2016