如何在Liferay中为用户添加/更新/查看标签

时间:2016-03-31 11:24:53

标签: liferay liferay-6 liferay-theme liferay-aui

我对标签和用户有以下要求。

  • 应根据中指定的电子邮件地址搜索标签 文本框。
  • 可根据特定用户显示的标签 搜索后的电子邮件地址
  • 应该有为用户添加/修改多个标签的选项 基于文本框中指定的emailid。

我已经完成了将标签添加到用户的编码,如下所示

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();
        }

通过上面的代码,我可以使用UI将标签添加到用户。但是,如果我想删除特定用户的标签我该怎么办,如果有任何API或标签,请指导我。

为了检索基于文本框中指定的emailAddress的标签,我只是通过查询表格表AssetEntry_AssetTags来使用ServiceBuilder概念。这是正确的方式来显示给定emailAddress可用的标签。

1 个答案:

答案 0 :(得分: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 class。

希望这有帮助。