I'm new at Java and Life. I'm creating an UploadPortlet example with Primefaces. Here is my view.xhtml:
<h:form enctype="multipart/form-data">
<p:fileUpload fileUploadListener="#{imagesView.upload}"
mode="advanced" multiple="true" sizeLimit="10000000"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />
<p:growl id="messages" showDetail="true" />
</h:form>
And the upload function:
public void upload(FileUploadEvent event) {
UploadedFile file = event.getFile();
String url = event.getFile().toString();
RenderRequest renderRequest = (RenderRequest) (FacesContext.getCurrentInstance().getExternalContext()
.getRequestMap().get("javax.portlet.request"));
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
long repositoryId = themeDisplay.getScopeGroupId();
String mimeType = file.getContentType();
String title = "test2222";
String description = "This file is added via programatically";
String changeLog = "hi";
Long parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
try {
Folder folder = DLAppServiceUtil.getFolder(themeDisplay.getScopeGroupId(), parentFolderId, "test");
ServiceContext serviceContext = ServiceContextFactory.getInstance(DLFileEntry.class.getName(),
renderRequest);
InputStream is = file.getInputstream();
DLAppServiceUtil.addFileEntry(repositoryId, folder.getFolderId(), file.getFileName(), mimeType, title,
description, changeLog, is, file.getSize(), serviceContext);
} catch (Exception e) {
System.out.println("Exception");
e.printStackTrace();
}
then I got this:
Caused by: java.lang.ClassCastException: com.liferay.portlet.ResourceRequestImpl cannot be cast to javax.portlet.RenderRequest
If I use the local file, it's ok, for ex:
File file = new File("F:\\Lib\\Photos\\expample.png");
So, anyone can help me explain why and how to fix this problem? Thx you!