簡體   English   中英

如何在Liferay 6.0.6的JSF Portlet中上載文件

[英]How to upload a file in JSF portlet in Liferay 6.0.6

我正在為Liferay 6.0.6(Plugins SDK 6.1)開發一個JSF 2.0 Portlet,並且我需要文件上傳功能。 我嘗試了以下不同的解決方案,但均未成功:

任何建議如何做到這一點都受到歡迎,也可以黑客入侵或使用JSF以外的其他技術。

為什么不使用標准HTML表單呢?

<form action="your_action_goes_here" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file" />
    <input type="submit" name="submit" value="Submit" />
</form>

然后在您的Java代碼中覆蓋processAction方法(通常在擴展GenericPortlet或Liferay的MVCPortlet或JSPPortlet(用於5.2.3版)的類中),然后可以通過以下方式獲取文件本身:

public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) {
    UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);
    File file = (File) uploadRequest.getFile("file");
    // Do something with your file here
}

任務完成! :)這只是框架代碼,將需要執行異常處理,但是您的IDE會幫助您。

~~編輯~~~

其他可能的解決方案可能使用:

 HttpServletRequest req = FacesUtil.getRequest();
 UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(req);

這是我從以下網站獲得的: http : //ironicprogrammer.blogspot.com/2010/03/file-upload-in-jsf2.html

有什么幫助嗎?

使用JSF標准的h:inputFile標簽(或任何流行的組件套件中的任何文件上傳標簽 ):

<h:form enctype="multipart/form-data">
    <h:inputFile value="#{bean.uploadedPart}" />
</h:form>

private Part uploadedPart;

public Part getUploadedPart() {
    return uploadedPart;
}

public void setUploadedPart(Part uploadedPart) {
    this.uploadedPart = uploadedPart;
}

我已經在Liferay-6.1-EE上成功使用了Primefaces v3.2的文件上傳組件和Liferay-Faces v3.1.0-RC1的內置bridge:inputFile。 仍然是候選版本,但相當穩定。 但是沒有使用Primefaces上傳組件的高級功能。 感謝Neil Griffin先生和其他一些人在使JSF 2.x在Portlet環境中工作方面所做的出色工作。

PortletFacesBridge 2.0.1bridge:inputFile組件可在Liferay 6.1 EE上為我使用JSF 2.0的Portlet 2.0 portlet運作。 因為我們使用的是Primefaces(v3.2),所以我也嘗試使用了它的uploadcomponent ,但這在portlet中不起作用 正在為PortletFacesBridge / Primefaces未來版本進行開發

對我有用的是:

xhtml:

<f:view xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:bridge="http://portletfaces.org/bridge">

...
    <h:form enctype="multipart/form-data" method="POST">
        <bridge:inputFile id="icon" binding="#{bean.attachment}" />
    </h:form>
...

豆角,扁豆:

import org.portletfaces.bridge.component.UploadedFile

...

private transient HtmlInputFile attachment;

...

public HtmlInputFile getAttachment() {
    return attachment;
}

public void setAttachment(HtmlInputFile attachment) {
    this.attachment = attachment;
}

public String addApplication() {
    UploadedFile uploadedFile = attachment.getUploadedFile();
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM