在liferay 6.2 GA4中使用liferay的更改肖像图像

时间:2015-08-10 00:05:38

标签: liferay liferay-6 portlet

我有liferay 6.2 GA4 ..我有一个问题

我想使用liferay的用户肖像更改,但我不想将所有代码复制到我的portlet ...

有没有办法从我的portlet调用liferay的肖像更新?就像在渲染URL或类似的东西...从liferay的我的帐户portlet调用edit_user_portrait struts动作,然后让liferay做其他所有事情......更新图像,显示错误等...

使用这个例子:(这是liferay的我的帐户portlet中的代码,用于调用更新肖像的弹出窗口)

<portlet:renderURL var="editUserPortraitURL" windowState="<%= LiferayWindowState.POP_UP.toString() %>">
      <portlet:param name="struts_action" value="/users_admin/edit_user_portrait" />
      <portlet:param name="redirect" value="<%= currentURL %>" />
      <portlet:param name="p_u_i_d" value="<%= String.valueOf(selUser.getUserId()) %>" />
      <portlet:param name="portrait_id" value="<%= String.valueOf(selUser.getPortraitId()) %>" />

我想要这样的东西,但是这不起作用...我告诉portlet名称(在这种情况下是用户管理员)struts动作所在的位置......并让liferay处理剩下的......

<liferay-portlet:renderURL portletName="<%=PortletKeys.USERS_ADMIN %>" var="editUserPortraitURL" windowState="<%= LiferayWindowState.POP_UP.toString() %>">
    <portlet:param name="struts_action" value="/users_admin/edit_user_portrait" />
    <portlet:param name="redirect" value="<%= currentURL %>" />
<portlet:param name="p_u_i_d" value="<%= String.valueOf(selUser.getUserId()) %>" />
<portlet:param name="portrait_id" value="<%= String.valueOf(selUser.getPortraitId()) %>" />

为此我输入了&lt;%@ taglib uri =“http://liferay.com/tld/portlet”prefix =“liferay-portlet”%&gt;

此代码给出了权限错误:

您没有访问此portlet所需的角色。

但我不会在日志中发送任何错误.. 我怎么能做这个工作?我错过了什么?

谢谢!!

2 个答案:

答案 0 :(得分:1)

我最终做的是萨利姆在评论中提出的建议:

<%String editPortraitUrl = themeDisplay.getPortalURL()+"/group/control_panel/manage?p_p_id=2&p_p_lifecy‌​cle=0&p_p_state=pop_up&p_p_mode=view&_2_portrait_id=0&_2_p_u_i_d="+themeDisplay.getUserId()+"&_2_struts_action=%2Fmy_account%2Fedit_user_portrait";
%>
<liferay-ui:logo-selector
currentLogoURL="<%= selUser.getPortraitURL(themeDisplay) %>"
defaultLogoURL="<%= UserConstants.getPortraitURL(themeDisplay.getPathImage(), selUser.isMale(), 0)     %>"
editLogoURL="<%=editPortraitUrl %>"
imageId="<%= selUser.getPortraitId() %>"
logoDisplaySelector=".user-logo"/>

以下链接供参考: https://www.liferay.com/es/community/forums/-/message_boards/message/57413369

答案 1 :(得分:0)

  

我想使用liferay的用户肖像更改

使用Liferay API可以做到这一点。

InputStream inputStream = new FileInputStream(file);
byte[] bytes = FileUtil.getBytes(inputStream);
UserServiceUtil.updatePortrait(themeDisplay.getUser().getUserId(), bytes);

reference

感谢。