我試圖將配置文件圖像添加到Liferay用戶使用jsf portlet與primefaces p:fileUpload組件。現在使用jsf + primefaces組件將配置文件圖像添加到liferay用戶
,因爲我們知道輪廓圖像添加到用戶,我們使用
UserLocalServiceUtil.updatePortrait(user, bytes_file);
其中user是用戶ID和bytes_file是字節
的陣列來獲得bytes_file的Liferay使用這種方式的價值。
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);
File file=uploadRequest.getFile(fileName);
i.e byte[] bytes=FileUtil.getBytes(file);
但正如我使用JSF的Portlet,無法得到的ActionRequest對象,所以我怎麼能得到的ActionRequest對象?
I have also tried to get actionrequest using this ways.
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
ActionRequest actionRequest = (ActionRequest) externalContext.getRequest();
或
LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
ActionRequest actionRequest = (ActionRequest) liferayFacesContext.getPortletRequest();
,但它給我的錯誤作爲com.liferay.portlet.ResourceRequestImpl 不能轉換到javax.portlet.ActionRequest
我已經試過阿洛斯這樣......
step 1. byte[] bytes_file = event.getFile().getFileName().getBytes();
step 2. UserLocalServiceUtil.updatePortrait(user, by_new);
,但它給我的異常,因爲com.liferay.portal.UserPortraitTypeException這意味着我們得到這個異常,當
renderedImage is null as shown below.
ImageBag imageBag = ImageToolUtil.read(bytes);
RenderedImage renderedImage = imageBag.getRenderedImage();
if (renderedImage == null) {
throw new UserPortraitTypeException();
}
所以我怎麼能得到正確的ActionRequest使用Liferay的方式來 圖像添加到用戶?或者我如何傳遞正確的字節值的上傳 圖像文件添加圖像給用戶?
或者是否有任何其他方式在liferay中添加用戶配置文件圖像?