我有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所需的角色。
但我不会在日志中发送任何错误.. 我怎么能做这个工作?我错过了什么?
谢谢!!答案 0 :(得分:1)
我最终做的是萨利姆在评论中提出的建议:
<%String editPortraitUrl = themeDisplay.getPortalURL()+"/group/control_panel/manage?p_p_id=2&p_p_lifecycle=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);
感谢。