一、基本使用,获取提交的参数
后端代码:
@RequestMapping(value = "/item/{configId}", method = RequestMethod.PUT) @ResponseBody public JsonObjectBase updateItem(@PathVariable long configId, @RequestParam(value = "value") String value) { // 业务校验 configValidator.validateUpdateItem(configId, value); LOG.info("start to update config: " + configId); // // 更新, 并写入数据库 // String emailNotification = ""; emailNotification = configMgr.updateItemValue(configId, value); // // 通知ZK // configMgr.notifyZookeeper(configId); return buildSuccess(emailNotification); }
前端代码:
// 提交 $("#submit").on("click", function (e) { $("#error").addClass("hide"); var me = this; var value = $("#value").val(); // 验证 if (!value) { $("#error").removeClass("hide"); $("#error").html("表单不能为空或填写格式错误!"); return; } $.ajax({ type: "PUT", url: "/api/web/config/item/" + configId, data: { "value": value } }).done(function (data) { $("#error").removeClass("hide"); if (data.success === "true") { $("#error").html(data.result); } else { Util.input.whiteError($("#error"), data); } }); });
可以看到spring会自动根据参数名字封装进入,我们可以直接拿这个参数名来用
二、各种异常情况处理
1、可以对传入参数指定参数名
public JsonObjectBase updateItem(@PathVariable long configId, // 下面的对传入参数指定为value,如果前端不传value参数名,会报错 @RequestParam(value = "value") String value)
错误信息:
HTTP Status 400 - Required String parameter 'value' is not present
2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
// required=false表示不传的话,会给参数赋值为null,required=true就是必须要有 public JsonObjectBase updateItem(@PathVariable long configId, @RequestParam(value = "myValue", required = true) String value)
3、如果用@RequestMapping注解的参数是int基本类型,但是required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int,这个不可以
参考:http://825635381.iteye.com/blog/2196911