ここで私の課題: fileUpload には enctype "multipart/form-data" を持つ独自の h:form が必要です。他のデータは「通常」の範囲内です。私にとってこれは、ページ内でフォームを次々に配置する必要があることを意味します。
これは正直言って意味がありません。どうやってこの結論に達したのかわかりません。おそらく、問題の誤った観察に基づいてこれを結論付けました。おそらく、間違った Bean スコープを使用し、フォーム送信の処理中に、これまでに入力されたすべての入力ファイルと以前にアップロードされたファイルに対して null 値が発生した可能性があります。@ViewScoped
複数の ajax リクエストによって同じビューと対話している限り、まったく同じ Bean インスタンスを存続させたい場合は、使用する必要があります。
エンコーディング<h:inputText>
とまったく同じ形式のように、「通常の」入力フィールドを完全に配置できます。multipart/form-data
このエンコーディングを使用すると、HTTP 要求が少し異なる形式で送信され、バイナリ コンテンツの余地が生まれます。詳細な背景説明については、rich:popupPanel および t:dataList の下の h:commandLink のバッキング Bean に渡されない paramsも参照してください。
以下も参照してください。
具体的な問題とは関係なく、どう解釈していいのかわからない
このオブジェクトでは、アップロードされたファイルへのパスも保存する必要があります
ただし、クライアント側の完全なファイル パスがサーバーに送信されることに絶対に依存できないことに注意してください。これは、ブラウザのセキュリティ バグにより IE ブラウザが使用されている場合にのみ発生します。またはのフレーバーでファイルの内容に興味があるはずです。必要に応じて、唯一のファイル名に基づいて、一意の名前の (一時) ファイルを自分で自動生成する必要があります (偶然に同じファイル名を持つ 2 番目にアップロードされたファイルがそれを上書きしないようにしてください)。Firefox 3 で HTML 入力フォームからファイル パスを取得する方法も参照してください。InputStream
byte[]