我正在尝试使用jQuery表单插件(http://malsup.com/jquery/form/)
提交表单我的js看起来像这样:
var options = {
success: callback,
type: "POST",
dataType: 'multipart/form-data',
url: url
};
$('#myForm').ajaxForm(options);
$('#myForm').submit();
我的控制器方法如下所示:
public ModelAndView processForm(MultipartHttpServletRequest request) throws Exception
我收到此错误:
(org.springframework.web.multipart.MultipartHttpServletRequest) throws
java.lang.Exception]; nested exception is java.lang.IllegalStateException: Current
request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]:
我做错了什么?
答案 0 :(得分:1)
您可以将控制器更改为处理多部分和非多部分
@RequestMapping(value="/urRequestMappingURL", method = RequestMethod.POST)
public @ResponseBody Map<String, Object> controllingMethod(HttpServletRequest request) {
if (request instanceof MultipartHttpServletRequest) {
// process the uploaded file
}
else {
// other logic
}
}
答案 1 :(得分:0)
这是一系列事情:首先,我需要添加
enctype="multipart/form-data"
到表单标记。
也因为表单标签跨越了多个div,jQuery表单插件没有获取其他输入。所以我这样做了:
<form id="myForm" enctype="multipart/form-data">
<input type="file" name="file"/>
</form>
然后我的js将使用常规jQuery添加其他输入字段,然后再提交:
var options = {
success: callback,
type: "POST",
dataType: 'JSON',
url: url,
beforeSerialize: function(form, options) {
options.data = {
caseNo: $("#caseNo").val(),
inspectionID: $("#inspectionID").val()
};
},
};
$('#myForm').ajaxForm(options);
$('#myForm').submit();
希望这有助于某人