2

FormPanel、FileUploadField、および Spring を使用すると、ファイル オブジェクトを取得できません。

ここに私が持っているものがあります:

CommonsMultipartResolver Bean を Spring Context ファイルに追加しました。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   <property name="maxUploadSize" value="100000"/>
</bean>

通常のゲッターとセッターを持つモデル クラスがあります。

pulic class UploadItem{
  private String filename;
  private CommonsMultipartFile fileData;
  ....
  getters/setters
  ....
}

私のコントローラクラス:

@Controller
@RequestMapping("/Foo")
public class ThingController extends BaseController implements ServlerContextAware{
  ....
  @RequestMapping(value = "/bar", method = RequestMethod.POST)
  public @ResponseBody
  String createFile(UploadItem item, BindingResults results){
     String orgFile = item.getFileData().getOriginalFilename();
     return orgFile;
  }

フォーム フィールドの作成には UiBinding を使用していますが、fileupload フィールドと formpanel を呼び出して他のメソッドをコードに追加しています。

次を呼び出す送信ボタンがあります。

  form.submit();

そして私のコンストラクターは、他のフォーム要件を処理します。

  form.setMethod(Method.POST);
  form.setEncoding(Encoding.MULTIPART);
  form.setAction("http://url.com/foo/bar");
  form.addSubmitCompleteHandler(new SubmitCompleteHandler(){
     @Override
     public void onSubmitComplete(SubmitCompleteEvent event){
          String results = event.getResults();
          Info.display("Upload Response", results);
     }
  });

コードを実行すると、item.getFileData().getOriginalFilename(); で nullpointerexecption が発生します。

何が問題なのかわからない。

4

1 に答える 1

1

私の推測では、Spring にそのように指示したことがないため、フォームは UploadItem にバインドされていません。今、誰かがこれを行う方法を知っていることを願っています。通常、Spring のフォーム タグ ライブラリを使用し、フォームに modelAttribute または commandName を提供しますが、私 (および ts) は GWT を使用するため、フォームは GWT コンポーネントから構築され、Spring フォーム タグを使用できません。

于 2013-01-18T01:16:16.523 に答える