2011-11-15 13 views
1

問題はかなり広がっています。ファイルp:fileUploadmode="simple"showcase)にアップロードしています。フォーラムでのファイルアップロードの問題に関する多くの質問と回答がありますが、私は包括的なものを見つけられませんでした。ファイルアップロードコンポーネント/faces/second.xhtmlにありますPrimeFaces 3.0.M4ファイルのアップロードでのもう1つの問題

<h:form> 
    <p:wizard> 
     <p:tab id="firstStep" title="First step"> 
      <ui:include src="/faces/first.xhtml" /> 
     </p:tab> 
     <p:tab name="secondStep" title="Second step"> 
      <ui:include src="/faces/second.xhtml" /> 
     </p:tab> 
    </p:wizard> 
</h:form> 

/faces/second.xhtmlが含まれています

<p:panel> 
    <h:panelGrid columns="2" id="file"> 
     <p:fileUpload value="#{tutorialBean.thumbnail}" mode="simple" /> 
     <p:commandButton value="Submit" update="growl" 
      actionListener="#{tutorialBean.thumbnailUpload}" /> 
    </h:panelGrid> 
</p:panel> 

豆:

@SessionScoped 
public class TutorialBean { 
    private UploadedFile thumbnail; 

    public void thumbnailUpload(){ 
    FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, 
      "File uploaded", thumbnail.getFileName()); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 

    // setters and getters 
} 

私はweb.xmlにするFileUploadフィルタを追加しました:

<!-- PrimeFaces file upload --> 
<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>100000</param-value> 
    </init-param> 
    <init-param> 
     <param-name>uploadDirectory</param-name> 
     <param-value>C:\Users\name\Desktop\</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

pom.xmlcommons-io(2.0.1)とcommons-fileupload(1.2.2)を追加しました。解決策によると、私はそれが機能しなければならないと分かったが、そうではない。 thumbnailthumbnailUpload実行中にnullです。 私は解決事前

おかげで、7.0.2.FinalとしてJBossのprimefaces 3.0.M4を使用しています:問題はfileUploadコンポーネントではありませんでしたが、ページのフォームに一部として含まれましたメインページの私は内側のフォームにprependId="false"を追加しましたし、すべてが

答えて

1

がシンプル/標準Primefacesフィルタで最初に試してみてください正常に動作します:それはあなたのためにこれを動作しない理由を私は本当に知らない

<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> 

。私はシンプルで先進のモードを試してみましたが、どちらもうまく動作します。あなたは、高度なモードを使用する場合にも、あなたはのparamとしてFileUploadEvent eventを受け取るアクションメソッドを使用することができ、それがこのように簡単です:

String fileName = "Uploaded_"+event.getFile().getFileName(); 
     System.out.println("Uploaded: " + fileName); 

UPDATE:

あなたは第二段階でのみファイルアップロードを持っているので、このようなことを試すことができます。

<p:wizard> 
    <p:tab id="firstStep" title="First step"> 
     <h:form> 
     <ui:include src="/faces/first.xhtml" /> 
     </h:form> 
    </p:tab> 
    <p:tab name="secondStep" title="Second step"> 
     <p:panel> 
      <h:form multipart> 
      <h:panelGrid columns="2" id="file"> 
       <p:fileUpload value="#{tutorialBean.thumbnail}" mode="simple" /> 
       <p:commandButton value="Submit" update="growl" 
        actionListener="#{tutorialBean.thumbnailUpload}" /> 
      </h:panelGrid> 
      </h:form> 
     </p:panel> 
    </p:tab> 
</p:wizard> 
+0

問題がネストされたフォームにあるように見えます。私は 'form enctype =" multipart/form-data "を別のメインフォームの中で使ってファイルアップロードを使う方法を知らない。何か提案はありますか? – nikagra

+0

@nikagraあなたは本当に '入れ子になったフォーム'が必要かどうかを確認するために、ここに(更新/編集の質問)あなたの全体のxhtmlのページを...多分あなたはフォームを閉じて、別のものを開くことができます。 – spauny

+0

xhtmlが更新されました – nikagra

関連する問題