2012-11-20 15 views
8

私はPrimeFaces 3.1.2、NetBeans 7.2、JSF 2.1、およびGlassFish 3.1.2を使用しています。FileDownloadとFileUpload JSFプライムフェイスが動作しない

私はhttp://www.primefaces.org/showcase/ui/fileUploadAuto.jsfhttp://www.primefaces.org/showcase/ui/fileDownload.jsfから入手した実際のコードを使用しています。

ファイルアップロードコードを実行すると、まったく動作しません。ファイルはアップロードされず、成功メッセージは表示されません。しかし、ファイルサイズが前述のサイズを超えると、ファイルサイズが大きすぎるというメッセージが表示されます。 PrimeFacesで

package com; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.context.FacesContext; 
import org.primefaces.event.FileUploadEvent; 

@ManagedBean 
@SessionScoped 
public class FileUploadController { 
    public void handleFileUpload(FileUploadEvent event) { 
     FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 
} 

その基本的に同じコードがページを披露:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
    </h:head> 
    <h:body> 
     <h:form enctype="multipart/form-data"> 
      <p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" 
       mode="advanced" 
       update="messages" 
       auto="true" 
       sizeLimit="100000" 
       allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/> 
      <p:growl id="messages" showDetail="true"/> 
     </h:form> 
    </h:body> 
</html> 

はここに私のバッキングBeanです:

は、ここに私の見解です。

ファイルダウンロードコードと同様です。ダウンロードをクリックすると何も起こりません。ポップアップが開いたり閉じたりする前に気付くこともあります。私は、(ダウンロード部分の)getリソースストリームに記載されている場所にイメージファイルを持っていますが、何が問題なのか分かりません。コードはPrimeFacesのショーケースページと基本的に同じです。

NetbeansのGlassfishではログやエラーが表示されません。また、必要に応じてログを有効にする方法もわかりません。

+0

@Askel Willgertが述べたように、beansはfaces-config.xmlで宣言されていますか? –

+0

@AlexandreLavoieこんにちはアレックスJSF 2.1でfaces-configファイルが必要だと思っていません。この一般的な例で間違っている場合は私に訂正してください。 – Mitra

+0

確かにあなたはそれを必要としませんが、注釈は見られませんでした。あなたのbeanがfaces-configで設定されている可能性があります。 –

答えて

8

最初の事はあなたのアプリケーションにいくつかのライブラリを追加します:

@ManagedBean 
@ViewScoped 
public class FileUploadController { 

    public void handleFileUpload(FileUploadEvent event) { 
     FacesMessage msg = new FacesMessage("Succesful",  event.getFile().getFileName() + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 
} 

は、ここではどのように働くか、JSF管理Bean詳細については、こちらをご覧ください。実際、PrimeFacesのファイルのアップロードは、Apacheのcommons-file-uploadとcommons-ioライブラリに依存しています。あなたのWEB-INF/libパスに追加してください:

あなたは以下のリンクからダウンロードできます。加えて

http://commons.apache.org/io/

http://commons.apache.org/fileupload/

あなたは、プログラムを見て、あなたのアップロードしたファイルの保存先を変更したい場合はまたweb.xmlの

<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
    <init-param> 
    <param-name>thresholdSize</param-name> 
    <param-value>51200</param-value> 
    </init-param> 
    <init-param> 
    <param-name>uploadDirectory</param-name> 
    <param-value>C:\etc</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

にそれを設定する必要があります。

PrimeFaces FileUpload File Saving Destination

+0

NO Luck Kshitij iveは、以下のjars commons-io-2.4.jar、commons-io-2.4-sources.jar、commons-fileupload-1.2.2.jarをプライムフェイスとともに追加しました。また、スタックトレースがatleastデバッグするのを見ることができません。それは、それを印刷する方法です。 – Mitra

+1

フィルタマッピングがこの答えにありません。あなたはそれを追加しましたか? PrimeFacesのユーザーズガイドで詳しく説明しています。 http://stackoverflow.com/questions/8875818/how-to-use-primefaces-pfileupload-listener-method-is-never-invoked/8880083#8880083 – BalusC

+0

ありがとうございますbalusもフィルタマッピングを追加した後にありがとう非常に – Mitra

1

xhtmlからBeanを使用できるようにするには、コントローラを@ManagedBeanとして注釈を付け、スコープを設定する必要があります。この場合、@ViewScopedまたは@RequestScopedが望ましい。

例:あなたが必要http://www.mkyong.com/jsf2/configure-managed-beans-in-jsf-2-0/

+0

こんにちはAksel iveは、私はコアのJSFから離れて追加しなければならない依存関係は、 – Mitra

1

タグ「allowTypes」に正規表現を正しく入れないと、「fileupload」要素はアクションをトリガーしないため、アクションが到達不能であるという印象を与えます。

これは現在あなたの問題ではないことがわかりますが、私はこの情報を共有することが重要だと思います。

関連する問題