2

当我使用 FormPanel、FileUploadField 和 Spring 时,我在获取文件对象时遇到问题。

这是我所拥有的:

我将 CommonsMultipartResolver bean 添加到我的 Spring Context 文件中:

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

我有一个带有常规 getter 和 setter 的模型类:

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

我的猜测是表单未绑定到 UploadItem,因为您从未告诉 Spring 这样做。现在,我希望有人知道如何做到这一点。通常我会使用 Spring 的表单标签库并在表单中提供 modelAttribute 或 commandName,但由于我(和 ts)使用 GWT,所以表单是从 GWT 组件构建的,我不能使用 Spring 表单标签。

于 2013-01-18T01:16:16.523 回答