2012-01-08 3 views
2

Liferay 6.0.6(Plugins SDK 6.1)のJSF 2.0ポートレットを開発しています。ファイルのアップロード機能が必要です。私は成功せず、次のさまざまなソリューションを試してみました:JSFポートレットでLiferayのファイルをアップロードする方法6.0.6

もハッキングやJSF以外の技術を使用して、それは歓迎されて行う方法の任意の提案。

ので、標準のHTMLフォームを使用しないのはなぜ

答えて

3

<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コードで(通常はGenericPortletまたは多分LiferayのMVCPortletまたはJSPPortlet(5.2.3用)を拡張したクラスで)processActionメソッドをオーバーライドします

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がその処理に役立ちます。

~~ EDIT ~~~

他の可能な解決策かもしれない使用する:

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

Iから得たこの:http://ironicprogrammer.blogspot.com/2010/03/file-upload-in-jsf2.html

は、任意のヘルプですか?

+0

はい、私も試みました(http://www.portalteam.net/blogs/using-file-upload-in-liferay-jsf-portlet)org.portletfaces.bridge.GenericFacesPortletをオーバーライドします。ここでの問題は、processActionが呼び出されなかったことです(processEvent(EventRequest eventRequest、EventResponse eventResponse)のみ)。したがって、Fileを取得できません。 PortalUtil.getUploadPortelRequestを別の場所で呼び出そうとしましたが、ファイルを取得できませんでした... – katis

+0

私は別の可能な解決策を見つけました。それがうまくいくかどうかわかりませんが、投稿して見たいと思っていました! :) – Jonny

0

bridge:inputFileコンポーネントPortletFacesBridge 2.0.1は、JSF 2.0を使用するPortlet 2.0ポートレットのLiferay 6.1 EEで動作します。 Primeface(v3.2)を使用しているため、私はuploadcomponentも使用しようとしましたが、まだdoesn't work in portletsです。それはfuture version of the 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(); 
    ... 
} 
0

私は正常に使用しているファイルアップロードPrimefaces v3.2の構成要素とブリッジに内蔵さ:で、inputFile Liferay-Faces v3.1.0-RC1でLiferay-6.1-EE上で実行されます。まだリリース候補だがかなり安定している。 Primefacesの高度な機能を使用しませんでしたが、コンポーネントをアップロードします。 Neil Griffin氏といくつかの人たちが、JSF 2.xをポートレット環境で使用する上で優れた仕事をしてくれたことに感謝します。

関連する問題