当我使用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()上获得了nullpointerexecption .getOriginalFilename();
我不知道问题是什么。
答案 0 :(得分:1)
我的猜测是表单没有绑定到UploadItem,因为你从未告诉Spring这样做。现在,我希望有人知道如何做到这一点。通常我会使用Spring的表单标记库并在表单中提供modelAttribute或commandName,但由于我(和ts)使用GWT,表单是从GWT组件构建的,我不能使用Spring表单标记。