2009-10-01 16 views
5

spring webflow 1.0とstruts 1.3を使用してファイルをアップロードする際に問題があります。Struts - ファイルのアップロード

JSPは、このようなものです:フォームはこのようなものである

<html:form action="/flowAction" method="post" enctype="multipart/form-data"> 
    <!-- snip --> 
    <html:file property="file" name="attachDocumentsForm" size="50"/> 
    <!-- snip --> 
</html:form> 

:今

public class AttachDocumentsForm extends SpringBindingActionForm { 
    // note, SpringBindingActionForm extends struts' ActionForm 
    private FormFile file; 
    //snip 
} 

、私の問題は、私は、フォームを送信すると、fileフィールドは常にnullであるということです。フォーム上の他のフィールドは正しく記入されており、RequestContextを調べると、そこにあるデータ構造の一部が深く埋もれていることがわかります。ここで

は私が添付ファイルで取得することができます恐ろしく醜い方法です:

// 'context' is the RequestContext 
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext(); 
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm"); 
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file"); 

私は、フォーム上のMultipartRequestHandlernullであることに気付きました、と私は、これはの一部である可能性がありますことを疑います問題は、私は役に立たないのCommonsMultipartRequestHandlerのインスタンスでそれを投入しようとしました。

fileフィールドに正しく入力するにはどうすればよいですか?

+0

あなたは(たFormFile)form.getFile()を使用して、ActionFormのアクセサからファイルを取得することはできませんでしょうか? –

答えて

0

は、アクセサメソッドと一緒に、あなたのActionFormにおけるタイプFormFileのファイル(attachDocumentsFormで呼ば1)と呼ばれるフィールドを追加します。

アップロードされたファイルには、form.getFile()を呼び出してアクセスできます。

こちらがお役に立てば幸いです。

+0

ありがとうございますが、それは単なる問題です。私はすでにActionFormにこれらのフィールドの1つを持っていますが、常にnullです。 –

+0

誰もが2006年からこれを経験したかどうかはわかりませんが、私が取り組んでいるレガシープロジェクトではまったく同じ問題があります。誰かが解決策を持っていればそれは素晴らしいでしょう:-) – Philippe

+0

同じ問題ここに。 –

1

私はあなたが春のディスパッチャサーブレットを設定すべきだと思う:http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html#mvc-multipart-resolver

+0

更新をありがとう、私はこれを調べます。私はあなたがリンクしたドキュメントを調べ、そのプロセスの一部としてマルチパートリゾルバを定義したことを知っています。私はそれが正しく配線されていることをすべて確信していません(私はこれを見てから数ヶ月です)。私はチャンスがあるときにもう一度それに行くでしょう。 –

関連する問題