dojo表单提交的处理:表单转为json提交,json值绑定到vo类
2014-02-10 11:49
399 查看
方法一:
1、定义dojo form
<form id="CompanyForm" data-dojo-type="dijit/form/Form" onsubmit="return this.validate();">
form中的元素必须有name属性,例如
<input data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="required : true" name="companyName" maxlength="20"/>
2、表单转为json,提交
例如:
vo类:
需要用到的jar:
jackson-core-asl-1.8.5.jar
jackson-mapper-asl-1.8.5.jar
绑定代码:
这样,就把json中的值赋值给了vo类,省去了手工解析、赋值的麻烦
方法二:
比前述更加简便:其余不变,直接把vo类放到rest接口参数里面,Resteasy会自动绑定
方法三:
如果表单不转换为json,也能绑定
首先,dojo代码改为
OK,到此为止,也同样实现了数据绑定
可见,方法二最为简洁
如果我们只想获取页面一部分数据,例如只取名为param的checkbox数组的值,则可以这样做:
首先,页面还是用domForm.toObject("CompanyForm")转换为对象,此时不能转换为json,headers参数可以不带
然后,后台方法使用@FormParam指明获取param的参数值
1、定义dojo form
<form id="CompanyForm" data-dojo-type="dijit/form/Form" onsubmit="return this.validate();">
form中的元素必须有name属性,例如
<input data-dojo-type="dijit/form/ValidationTextBox" data-dojo-props="required : true" name="companyName" maxlength="20"/>
2、表单转为json,提交
function submit(){ var url = "/dojo/rest/echo/modCompany"; require(["dojo/request/xhr", "dojo/dom-form"], function(xhr, domForm){ xhr.post( url, { headers:{ 'Content-Type': 'application/json; charset=UTF-8' }, handleAs: "json", data: domForm.toJson("CompanyForm") }); }); }3、json值绑定到vo类,前提是json中的字段名称和vo类中的成员变量名称一一对应
例如:
json:{"companyName":"正一味","phone":"","addr":"","companyType":"zh"}
vo类:
public class Company{ private String companyName; private String phone; private String addr; private String companyType; 。。。。。。
需要用到的jar:
jackson-core-asl-1.8.5.jar
jackson-mapper-asl-1.8.5.jar
绑定代码:
import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; 。。。。。。 @POST @Path("/modCompany") @Produces("application/json") public Company modCompany(@Context HttpServletRequest request) throws JsonParseException, JsonMappingException, IOException{ String json = (String)request.getParameterNames().nextElement(); ObjectMapper mapper = new ObjectMapper(); Company c = mapper.readValue(json, Company.class); }
这样,就把json中的值赋值给了vo类,省去了手工解析、赋值的麻烦
方法二:
比前述更加简便:其余不变,直接把vo类放到rest接口参数里面,Resteasy会自动绑定
@POST @Path("/modCompany") @Produces("application/json") @Consumes(MediaType.APPLICATION_JSON) public Company modCompany(Company c){。。。。。。}
方法三:
如果表单不转换为json,也能绑定
首先,dojo代码改为
function submit(){ require(["dojo/request/xhr", "dojo/dom-form"], function(xhr, domForm){ xhr.post("/dojo/rest/echo/modCompany", { headers:{ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, //header有所变化 handleAs: "json", data: domForm.toObject("CompanyForm") //这里变为toObject }) }); }其次,vo类调整
public class Company{ @FormParam("companyName") //加上@FormParam private String companyName; private String phone; private String addr; private String companyType; 省略getter/setter }最后,rest接口调整
@POST @Path("/modCompany") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces("application/json") public Company modCompany(@Form Company c) //增加@Form
OK,到此为止,也同样实现了数据绑定
可见,方法二最为简洁
如果我们只想获取页面一部分数据,例如只取名为param的checkbox数组的值,则可以这样做:
首先,页面还是用domForm.toObject("CompanyForm")转换为对象,此时不能转换为json,headers参数可以不带
然后,后台方法使用@FormParam指明获取param的参数值
@POST @Path("/setSource") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public void setSource(@FormParam("param") String[] param)
相关文章推荐
- form 表单提交后返回json 回调处理返回结果
- 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
- jquery序列化form表单使用ajax提交后处理返回的json数据
- jq中提交表单转为json
- jquery序列化form表单使用ajax提交后处理返回的json数据
- ajax提交form表单数据serialize转为JSON
- 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
- Mustache和jq处理form表单的提交与绑定
- jquery序列化form表单使用ajax提交后处理返回的json数据
- jquery序列化form表单使用ajax提交后处理返回的json数据
- get方法提交表单的乱码处理
- jQuery Easyui form 提交验证 与 json数据返回结果的处理
- JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器
- Java处理json 取json值
- PHP对表单提交特殊字符的过滤和处理
- form表单转Json提交的方法(推荐)
- ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景
- DWZ框架Ajax无刷新表单提交处理流程
- 提交 form表单js转成json
- jsp提交表单与后台java处理表单