springmvc和jquery.form提交对象含有多余字段

 我来答
babyAn涩
推荐于2016-03-30 · 知道合伙人金融证券行家
babyAn涩
知道合伙人金融证券行家
采纳数:7678 获赞数:132050
2014年于上海市商贸旅游学校毕业,专业会计。后就读于上海市同济大学网络教育学院。

向TA提问 私信TA
展开全部
jquery.form把form封装了一下,可以直接提交表单,以ajax的形式,而spring mvc中有个modelAttribute属性,可以把表单传来的参数包装成对象类型,这样在提交参数的时候处理起来就省事多了(PS:任何省事都是建立在费事研究的基础上),请看代码
javascript:

Js代码
<script type="text/javascript">
function callBackGraFunc(responseText, statusText) {
if (responseText == 1) {
// 获取select控件文本
var fgraduationState1 = document.getElementById("fgraduationState");
var fgraduationStateText = fgraduationState1.options[fgraduationState1.selectedIndex].text;

// populate the form
$("#fgraduationTime1").text($("#fgraduationTime").val());
$("#fgraduationState1").text(fgraduationStateText);
$("#fgraduationReason1").text($("#fgraduationReason").val());
$("#fdipomaNumberr1").text($("#fdipomaNumberr").val());
$("#fdegreeNumber1").text($("#fdegreeNumber").val());
$("#fcerNumber1").text($("#fcerNumber").val());
$("#fdiplomaDate1").text($("#fdiplomaDate").val());
$("#fdegreeDate1").text($("#fdegreeDate").val());
$("#fcerDate1").text($("#fcerDate").val());
} else {
alert("保存数据出错");
}
}

$(document).ready(function() {
var options = {
success: callBackGraFunc
};

// jquery.form 提交表单
$('#form1').ajaxForm(options);
</script>

$('#form1').ajaxForm(options)是渲染form里的数据,提交时以ajax方式提交,页面不显示刷新。
var options是一个回调函数,当form提交成功,action里有数据返回时,调用callBackFunc方法进行前端的数据的填充和渲染。

jsp:

Html代码
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>

<form:form name="graduationForm" modelAttribute="_graduation" id="form1" action="${ctx}/enrollment/graduation/${_info.fid}/save" method="post">
<input type="hidden" name="fid" value="${_info.fid}" />
<input type="hidden" name="enrStudentInfo.fid" value="${_info.enrStudentInfo.fid}" />
<input type="hidden" name="fcredit" value="${_info.fcredit}" />
<input type="hidden" name="fappraisal" value="${_info.fappraisal}" />

</form:form>

上面使用了spring的form标签,在题头需引进定义

Html代码
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

java:

Java代码
/**
* Destription Ajax 保存毕业、结业信息
* @param fid
* @param enrGraduation
* @param redirectAttributes
* @return
*/
@RequestMapping(value = "/{fid}/save", method = RequestMethod.POST)
public String saveGra(@ModelAttribute("_graduation") EnrGraduation _graduation, HttpServletRequest request, HttpServletResponse response)
{
response.setContentType("text/plain;charset=UTF-8");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}

// 判断信息是否存在
if(!_graduation.isNew()){
_graduation.setFupdatetime(new Date());
_graduation.setFisRemove(0);
enrGraduationService.update(_graduation);

out.print("1");
out.close();
} else {
out.print("0");
out.close();
}

return null;
}

在类中接受“_graduation”参数,包装成对象,然后返回ajax数据。

使用jquery.form,需要引进jquery.form.js,在布局时,Jquery.js写在上面,因为先渲染jquery.js

Html代码
<script type="text/javascript" src="${ctx}/static/js/jquery-1.7.1.min.js"></script>
<!-- jquery form js -->
<script type="text/javascript" src="${ctx }/static/js/jquery.form.js" ></script>
龙氏风采
推荐于2016-08-22 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
基于SpringMVC与jquery的ajax提交表单的若干情况详解
一、$.post、$.get、$.ajax三者的区别(参考文献http://houdunwang.com/lesson.html):
$.post和$.get分别是采用post方式和get方式向服务器发送请求。两者的不同是,get请求的参数是在url直接以url?name1=value1&name2=value2的形式拼接而成,而post请求的参数会以请求正文的形式传送到服务器
关于同异步发送请求:$.post和$.get默认是采用异步的形式向服务器发送请求,但需很多情况需要得到服务器的返回值来判断下一步的操作,此时需要用到$.ajax
var flag=false;
$.ajax({
type: "get",
url: "xxxxxx",
async:false,
data: {username:name, password:pwd},
dataType: "json",
success: function(data){
if(data>0){
flag=true;
}
}
});
  如以上代码,type来设置请求方式,async则设置的是同步或者异步,默认为true异步的,此时设置为false。如果用通常的$.post和$.get的话,flag的值是不会随着返回值data的值发生改变的。
二、文件上传
ajax上传文件一直都是一个比较难点的问题,在这里我用的是jquery的一个扩展框架,jquery.form.js,此包提供了一个$ajaxSubmit方法,很好的解决了springmvc下文件上传的问题,当然,form表单的method为post,type为multipart/form-data,示例代码如下:
$(#id).ajaxSubmit({
type: 'post',
url: 'xxxxxx',
data: {
uername: name,
content: content
},
success: function(data) {
//回调函数
}
});
此时,表单数据和文件数据会保存在request中传入服务器。后台获取代码如下:
MutlipartHttpServletRequest multipart =(MutlipartHttpServletRequest )request;
//把request转为上传文件专用的request
Map<String,String[]> dataMap = request.getParameterMap();
//获取普通表单数的<name,value>键值对
Map<String,Multipart> fileMap = request.getFileMap();
//获取上传文件的键值对,当未上传文件时,这个键值对会以普通数据存在于dataMap中而不是fieMap中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式