2011-11-09 20 views
0

PrimeFacesの<p:fileUpload>に問題があります。primefaces JSF P:fileUploadが応答を取得できません

<p:fileUpload fileUploadListener="#{blackListImportBean.xlsFileUpload}" 
    multiple="true" allowTypes="*.xls;*.xlsx" description="*.xls;*.xlsx" 
    sizeLimit="100000"/> 
<h:commandButton actionListener="#{blackListImportBean.test}" 
    value="#{msg.SAVE}" action="test-page.xhtml" /> 

し、以下のように豆のJavaコード:私は、Excelは、以下のようにファイルをアップロードするにfaceletページを作成し、私はボタンをクリックすると

public void xlsFileUpload(FileUploadEvent event){ 
    // ... 
} 

public void test() { 
    // ... 
} 

は、メソッドtest()が呼び出され、メソッドxlsFileUpload()ですこのメソッドはパラメータを必要とするため、メソッドxlsFileUpload()が見つからないというエラーメッセージが表示されます。パラメータを削除すると、そのページはそのメソッドを見つけることができません。私を混乱させるもう1つの問題は、アップロードファイルを取得できないことです。私はドキュメンテーションごとにそれを行い、私は何をすべきか分かりません。

答えて

0

つの質問:

1)あなたはPrimefaces 2.xまたは3.xを使用していますか? 2)スタックトレースには何がありますか?それはおそらく理由に関する情報を含んでいます。

ファイルアップロードコンポーネントは、独自のイベントシーケンスでファイルをアップロードするため、ユーザーがファイルアップロードをトリガーするとトリガーされます。これは、auto = "true"というプロパティを使って自動的に行うことができます。あるいは、アップロードを引き起こす「アップロード」ボタンを表示します。このように、それはテスト方法である第2のアクションから分離されています。

あなたのメソッドが見つからないという事実から判断すると、私はBeanが管理されていないか、環境が同期していない(クリーンビルド)と推測します。あなたのフィルタが設定されている場合は、アップロードされていますファイルごとに表示される一連のメッセージが表示されるはずです

@ViewScope 
public class TestBean 
{ 
    public void handleFileUpload(FileUploadEvent evt) 
    { 
    System.out.println("Handling Upload: " + evt.getFile()); 
    UploadedFile upload = evt.getFile(); 
FacesContext.getCurrentInstance() 
       .addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "File Uploaded", "This file is " + upload)); 
    . . . //do whatever here.... 
    } 
} 

// JSFページ

. . . 
    <h:form> 
     <p:messages id="messages" /> 
     <p:fileUpload 
      fileUploadListener="#{testBean.handleFileUpload}" 
      multiple="true" 
      allowTypes="*.*;" 
      update="messages" 
     /> 
     </h:form> 

. . . 

また、簡単なテストをしてみてください。そうでない場合は、便利なエラーメッセージが表示されます。また、パスに基本的なApacheライブラリ(CommonsFileUpload)がかなり必要であることに気をつけてください。これは問題を引き起こしている可能性があります。

+0

私はprimefaces RC2.2.jarを使用して、私は私に与えるサンプルをコピーし、私が望む結果を得ることができません。 – smilefatter

+0

私はprimefaces RC2.2.jarを使用しています。私に与えるサンプルをコピーして、私が望む結果を得ることができないので、私はプロジェクトをきれいにして再構築します。 Beanは実際には管理されず、私はその理由を知らない。 – smilefatter

+0

問題が解決されていた、エラーが私のweb.xml – smilefatter

0

は、あなたのweb.xmlに以下を追加することを忘れないでください:

<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class> 
    org.primefaces.webapp.filter.FileUploadFilter 
    </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 
+0

はい、私はすでにweb.xmlに設定しています。ありがとうございます。 – smilefatter

+0

サーブレット名が対応していることを確認してください。 –

+0

うん、ありがとう^ =^ – smilefatter

関連する問題