3

ネストされたオブジェクトを Spring 3 にバインドしようとしていますが、問題があります。

JSP:

<portlet:actionURL var="formAction" />
<form:form id="add-objects-form" method="post" action="${formAction}">
   <input name = "obj.a"...>
   <input name = "obj.b"...>
   <input type = "file" multiple="multiple" name="file"/>
</form>

フォーム オブジェクト:

class FormObject{
private final static Logger logger = ...

private MultipartFile file
private Obj obj

...getters and setters
}

コントローラ:

@RequestMapping(method = RequestMethod.POST)
public void uploadDocument(@ModelAttribute FormObject formObject, BindingResult results ) {

}

formObjectと を取得obj.aしますobj.bが、file常に null です。

4

1 に答える 1

2

アドインmodelAttribute="formObject"_<form:form>

また、クラスからデバッグ情報を除外していないことを確認してください。ある場合、または不明な場合は、具体的に記入してください@ModelAttribute("formObject")

ファイル (マルチパート データ) を処理するには、フォームの enctype を指定する必要があります。

enctype="multipart/form-data"

更新: ファイルのアップロードに js-library を使用しているため、次のことを行う必要があります。

  • ajax リクエストで画像のみをアップロードします (他には何も送信しないでください)。アップロードされたファイルを一時的な場所に保存する
  • 応答には一時ファイルの名前が含まれている可能性があります。これらの名前を隠しフィールドに保存します
  • 次にフォームを送信し(ajaxまたは通常の送信のいずれかを介して)、文字列のみを含む隠しフィールドの値を渡します
  • ファイルを一時的な場所から永続的な場所に移動します
  • アップロードされたがフォームが送信されていないファイルは、時間単位または日単位のジョブでクリーニングできます。
于 2011-02-24T22:06:59.493 に答える