2012-01-26 10 views
2

フォーム全体を投稿せずにファイルをアップロードしたいです。ファイルのアップロードは正常に動作しますが、フォーム全体が送信されます。検証が正しい場合、これはうまく動作します。しかし、p。必要なフィールドが空で、アップロードが機能せず、エラーメッセージが返されます(必須フィールドがありません)。 私はファイルアップロード(ajax = true)をajaxしようとしました。しかし、アップロードは何もしません。jsfでのajaxifiedファイルのアップロード

私はファイルのアップロードと他のフィールドを別のフォームに入れて仕事をしました。これは動作しますが、その結果、ファイルをアップロードするときに他のフィールドで変更したデータは無視されます。

提案がありますか?それは、(JavaScriptでコアのAjaxリクエストコントローラオブジェクトです)XMLHttpRequestの最初のバージョンでファイルをアップロードしていない可能ある

<t:inputFileUpload id="fileupload" value="#{prospectDetail.upFile}" size="50" /> 
<h:outputLabel for="description" value="#{msg.prospectdetail_description}"/> 
<mw:inputText id="description" size="40" value="#{prospectDetail.fileDescription}" /> 
<p:commandButton styleClass="button" value="#{msg.common_upload}" action="#{prospectDetail.upload}" ajax="false" process="@form" onbegin="busyPopup.show()" oncomplete="busyPopup.hide();"/> 
+0

は、primefacesのアップロードで同じ問題が発生しましたが、ファイル選択時に自動アップロードするように設定しています。使用するコンポーネントに自動アップロードがあるかどうかを確認してください。 – Daniel

答えて

3

は、ここで私が使用して私のコードです。 XMLHttpRequestの2番目のバージョンはそれをサポートしていますが、これは<p:commandButton>によって実装されていません(現在のところ、ブラウザのサポートは低いです)。

すでにPrimeFacesを使用しているようですが、独自の<p:fileUpload>コンポーネントを使用するのはなぜですか? single upload、さらにはauto uploadの例もあります(PrimeFacesのファイルアップロードフィルタを追加した後で、MyFaces拡張フィルタをweb.xmlから削除することを忘れないでください)。 PrimeFacesの<p:fileUpload>は、XHR2ファイルのアップロードを自動的に利用します。

ファイルのアップロードや他のフィールドを別のフォームに入れて仕事をしました。これは動作しますが、その結果、ファイルをアップロードするときに他のフィールドで変更したデータは無視されます。あなたがリクエストスコープの代わりにビュースコープに豆を入れて、アクションメソッドからnullまたはvoidを返した場合

、これは動作するはずです。

+0

< p:fileUpload> rulez :)これで、ファイルに余分なフィールド記述(文字列)を広告し、ファイルアップロードイベントでBeanに送信できるようになったのですか? – roel

+1

これをどのようにアップアップしても受け入れられないのですか? – Kawu

+0

おっと、修正済み:) – roel

関連する問題