java param request_Java中的@RequestBody和@RequestParam注解的用法

1.spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头,也就是在url中,格式为xxx?username=123&password=456,

而RequestBody注解接收的参数则是来自于requestBody中,即请求体中。

2.如果是从js通过ajax请求传送json字符串到controller层,在接受数据的形参用@RequestBody注解时,ajax请求时内容类型为contentType:"application/json",且将要传送的数据从json对象转为json字符串data: JSON.stringify(param);

3.如果在ajax的请求地址中带有参数,则在controller层中可以加@RequestParam注解获取参数,常用于get请求,也可以不加,加的话因为@RequestParam是key-value类型,那地址的参数中必须有形参中的key值

4.ajax请求参数中也可以有数组类型,如例子中的taskTemplateValueList

5.遇到复杂的数据格式,一般来说还是json比较好处理,即用@RequestBody接收

js:

/**

* 点击预览按钮

*/

function smsPreLook() {

var templateId = $('#templateId').val();

var templateContent = $('#templateContent').val();

if (templateContent == null || templateContent == '') {

msgInfoModal("提示",'请编辑文本内容');

return;

}

//关键字

var taskTemplateValueList=[];

var checkValue=true;

$("tr[name='taskTemplateValueListTr']").each(function(){

var paramName=$(this).find('input[name=paramName]').val();

var paramValue=$(this).find('input[name=paramValue]').val();

var taskTemplateValue={};

taskTemplateValue.paramName = paramName;

taskTemplateValue.paramValue = paramValue;

taskTemplateValueList.push(taskTemplateValue);

if (paramValue == null || paramValue == '') {

checkValue=false;

}

});

if (!checkValue) {

msgInfoModal("提示",'请输入关键字的替换内容');

return;

}

var smilResourceId=$('#smilResourceId').val().trim();

var isdetail=false;

var param = {

smilResourceId: smilResourceId,

smsMsgContent:templateContent,

templateContent:templateContent,

templateId:templateId,

taskTemplateValueList:taskTemplateValueList//数组类型

};

$.ajax({

url: WEB_ROOT + "/mall/task/preLook?isdetail="+isdetail,

type: "html",//返回值类型

data: JSON.stringify(param),//将要传送的数据从json对象转为json字符串

contentType:"application/json",//定义数据内容类型为"application/json"

method: "post",

success: function (page) {

$("#preLook").html(page);

$('#preLookModal').modal('show');

}

});

}

java:

/*** 预览显示*/@RequestMapping(value= "/preLook")

//如果在isdetail参数前有@RequestParam(value="isdetail",required = true),则在从js传来的请求地址后的参数必须有isdetail作为key值的参数,required则控制该参数的value值是否必传public String examineInit(Model model, @RequestBody TaskVO taskVO, Boolean isdetail) throwsException {

AuthStaffVO staff = StaffUtil.getStaffVO(session);

if (isdetail && taskVO.getId() != null) {

taskVO = itTaskSV.selectTaskVOById(taskVO.getId());

} else {

//校验文本内容的权限(部分自定义的话,只能用模板;完全自定义可以不用模板)

if (TaskConstant.TASK_RIGHT_1.equals(staff.getTaskRight())) {

//必须使用模板

if (taskVO.getTemplateId() == null) {

return null;// R.failure("请选择模板~")

}

setTaskSmsMsgContentByTemplate(taskVO);

} else if (TaskConstant.TASK_RIGHT_2.equals(staff.getTaskRight())) {

//可以不用模板

if (taskVO.getTemplateId() != null) {

setTaskSmsMsgContentByTemplate(taskVO);

} else {

taskVO.setSmsMsgContent(taskVO.getTemplateContent());

}

} else {

return null;//R.failure("您当前没有权限进行此操作哦~");

}

}

List taskVOList = new ArrayList();

try {

taskVOList = itTaskSV.selectTaskVOList(taskVO);

} catch (Exception e) {

log.error("短信任务管理(后台)--数字短信预览异常", e);

}

model.addAttribute("taskVOList", taskVOList);

return "homeMain/myCenter/task/mall-smsPreLook";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值