本文实例讲述了python映射列表。分享给大家供大家参考。具体分析如下:
1 在表单序列化映射到后台实体对象中,走了蛮多弯路,特总结如下。
表单:
JS方法:
function upload() {
$.ajax({
type:"POST",
url : '<%=basePath%>upload01.do', //用于文件上传的服务器端请求地址
data : formToJson($("#form01")),
contentType: 'application/json; charset=utf-8',
success : function(data, status) //服务器成功响应处理函数
{
alert(data);
},
error : function(data, status, e)//服务器响应失败处理函数
{
alert(e);
}
});
} //将表单数据转化为JSON数据 form为表单对象,如$("#form01"),返回序列化数据
function formToJson(form) {
var data = form.serialize();
data = decodeURIComponent(data, true);//防止中文乱码
data = data.replace(/&/g, "','");
data = data.replace(/=/g, "':'");
data = "({'" + data + "'})";
obj = eval(data);
obj=JSON.stringify(obj); return obj;
}需要注意的是,为什么不直接用serialize()序列化表单呢?还要这麻烦。当时做的时候,$(“#form”).serialize()返回的是name=1&password=1的形式,不知道jquery怎么序列化成这样的,在网上找了半天,未果,看到一篇博客,http://www.cnblogs.com/suruozhong/p/6256457.html,将这种奇怪的序列化的结果通过换字符转成JSON的形式,然后OK,感谢博主。
后台控制器:
@RequestMapping(value = "upload01", method = RequestMethod.POST) public void uploadText01(
HttpServletRequest request,
HttpServletResponse response,
@RequestBody User user) {
System.out.println("run in");
}需要说明的是在对象的前面加@RequestBody,前台的JSON数据才会映射到对象中,不然会报一系列的错:
Unsupported Media TypeContent type 'application/json;charset=UTF-8' not supported
不过有可能是你的实体名称与标签中的name属性值不匹配导致这种错误。
出现表单无法映射到后台实体还有可能是缺少架包的原因,
net.sf.json-lib
json-lib
jdk15
com.fasterxml.jackson.core
jackson-annotations
com.fasterxml.jackson.core
jackson-databind
com.fasterxml.jackson.core
jackson-core
2 直接在方法中提交表单
PageAdmin企业网站管理系统V4.0,基于微软最新的MVC框架全新开发,强大的后台管理功能,良好的用户操作体验,可热插拔的插件功能让扩展更加灵活和开放,全部信息表采用自定义表单,可任意自定义扩展字段,支持一对一,一对多的表映射.....各种简单到复杂的网站都可以轻松应付。 PageAdmin V4.0.25更新日志: 1、重写子栏目功能,解决之前版本子栏目数据可能重复的问题 2
function doConfirmForm(){
var form01=$("#form01");
form01.submit();
}3 Form表单转FormData然后JSON提交
相关推荐:








