![](/img/trans.png)
[英]How to backport a 6.1.1 jsf portlet to get it running on a 6.1.0 liferay portal?
[英]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,並且我需要文件上傳功能。 我嘗試了以下不同的解決方案,但均未成功:
ActionRequest
處理 bridge:inputFile
組件 任何建議如何做到這一點都受到歡迎,也可以黑客入侵或使用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.1的bridge: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.