Java 通过jquery脚本将表单提交到多个url
在我当前的spring项目中,我有一个表单,其中包含两种类型的字段:普通文本字段和一个允许上载o图像文件的文件输入。我希望将这类字段中的每一个提交到spring控制器中的不同方法。文本字段应提交到以下方法之一:Java 通过jquery脚本将表单提交到多个url,java,javascript,jquery,forms,spring,Java,Javascript,Jquery,Forms,Spring,在我当前的spring项目中,我有一个表单,其中包含两种类型的字段:普通文本字段和一个允许上载o图像文件的文件输入。我希望将这类字段中的每一个提交到spring控制器中的不同方法。文本字段应提交到以下方法之一: @RequestMapping(value="insert", method=RequestMethod.POST) @ResponseBody public String insert(@ModelAttribute("object") E object, BindingResult
@RequestMapping(value="insert", method=RequestMethod.POST)
@ResponseBody
public String insert(@ModelAttribute("object") E object, BindingResult result) {
if(serv.cadastra(object)) {
return "yes";
}
else {
return "not";
}
}
@RequestMapping(value="update", method=RequestMethod.POST)
@ResponseBody
public String update(@ModelAttribute("object") E object, BindingResult result) {
if(serv.altera(object)) {
return "yes";
}
else {
return "not";
}
}
filem upload字段应提交到此方法:
@RequestMapping(value="upload", method=RequestMethod.POST)
@ResponseBody
public String setPicture(@ModelAttribute(value="object") E object, BindingResult result, @RequestParam("file") MultipartFile file) {
if(serv.upload_picture(object, file))
return "pic-yes";
else
return "pic-not";
}
到目前为止,我已经尝试过这个jquery脚本,但它只适用于文本字段:
$(document).on('submit', '.form', function (event) {
event.preventDefault();
var $form = $( this ), url = $form.attr( "action" );
var posting = $.post( url, $(this).serialize() );
posting.done(function( data ) {
var alert = $("#"+data);
alert.css("display", "block");
$(".form").each(function(){
this.reset();
});
$(".upload").each(function(){
var $upload = $(this), url = $upload.attr("action");
var posting2 = $.post( url, $(this).serialize() );
posting2.done(function(data){
$("#"+data).css("display", "block");
$("#"+data).fadeOut(2500);
});
});
alert.fadeOut(2500);
});
});
当前表单的html代码如下所示:
<form id="command" role="form" class="form" action="Usuario/cadastra" method="post">
<fieldset>
<div class="panel panel-default">
<div class="panel-heading">
</div>
<div class="panel-body">
<p>
<label for="login" class="form-control">login</label>
<input id="login" name="login" class="form-control" type="text" value=""/>
</p>
<p>
<label for="senha" class="form-control">senha</label>
<input id="senha" name="senha" class="form-control" type="password" value=""/>
</p>
<p>
<label for="first_name" class="form-control">first_name</label>
<input id="first_name" name="first_name" class="form-control" type="text" value=""/>
</p>
<p>
<label for="last_name" class="form-control">last_name</label>
<input id="last_name" name="last_name" class="form-control" type="text" value=""/>
</p>
<p>
<label for="email" class="form-control">email</label>
<input id="email" name="email" class="form-control" type="text" value=""/>
</p>
</div>
</div>
<div class="panel panel-default include">
<div class="panel-heading">
Selecione um arquivo de imagem para <i>foto do perfil</i>
</div>
<div class="panel-body">
<form id="command" class="form upload" action="/loja/Usuario/upload" method="POST">
<input type="file" name="file" class="form-control"/>
</form>
</div>
</div>
<p>
<button type="submit" class="btn btn-lg btn-primary">Cadastrar</button>
</p>
</fieldset>
</form>
登录
森哈
名字
姓
电子邮件
请给我一张照片
地籍
任何人都可以指出实现这一点的方向?对于此异常:org.springframework.web.multipart.MultipartException:当前请求不是多部分请求 您是否已将这一行添加到SpringXML或applicationContext文件中
在类路径中添加SpringWebMVCjar。创建第三个方法,用相关数据调用原始2。在客户端拆分post数据似乎是错误的(并且很难进行文件上传)@user574632我用一个方法尝试了一次,对象和上传的文件都作为参数(
publicstringinsert(@modeldattribute(“object”)E object,bindingsresult,@RequestParam(value=“file”,required=false)MultipartFile file文件)
),但在这种情况下,我没有得到任何提交数据(始终面临错误org.springframework.web.multipart.MultipartException:当前请求不是一个多部分请求
不是spring用户,但您应该致力于修复该错误,而不是构建一个javascript黑客程序。首先,您需要设置enctype=“multipart/form data”
在您的表单标签上-仅此一点就可以解决问题我的项目中不使用任何xml文件,只使用java类。您知道java代码中与该行等效的代码吗?@KleberMota try:@Bean public commons multipartResolver multipartResolver(){commonmultipartresolver=new commonmultipartresolver();resolver.setMaxUploadSize(sizeInBytes);return resolver;}
@JoaoEvangelista除此之外,我还尝试添加这一行:jsp\u dispatcher.setMultipartConfig(新的MultipartConfigElement(“/tmp”,1024*1024*5,1024*1024*5*5,1024*1024));
到我的WebAppInitializer,但当我重新部署应用程序时仍然得到相同的错误。@JoaoEvangelista通过浏览器的网络分析器,我注意到只有文本输入字段被发送到服务器,那里没有列出任何文件输入字段。我希望所有字段都应该在这里。我只知道带有atribute的字段<代码>名称被发送到服务器,这就是这里发生的情况。您知道为什么会发生这种情况吗?您是否已将encrtype添加到表单中?它是多部分/表单数据