如何设置Spring Boot中@RequestBody反序列化实体的默认值

如题所述

可以的
在web程序开发中,前端和服务器数据的传输方式常用的有两种,一种是以表单的形式提交,此时可以利用jquery的serialize()方法将表单内
容转为a=1&b=2&c=3&d=4&e=5这样的格式传输过去,接收端则可以用javabean直接接收。
还有一种方式是以json格式传输,接收时若直接用bean接收则接收不到,此时应该用@RequestBody方式,需要注意的是接收的需要是json串,而不是json对象,可以在发送前使用JSON.stringify函数进行处理。
例子如下
客户端:

var url=path+'testConverter.html';
$.ajax(
{
url :
url,
type :
"POST",

dataType:"json",

contentType:'application/json;charset=UTF-8',

data:JSON.stringify({userId:'1',userName:'hello',password:'test',credits:'2',lastIp:'',lastVisit:'1986-05-27'}),
success :
function(data) {

alert(data.userName);

},
error:function(e){

alert("err");

}

服务端:
@RequestMapping(value="/testConverter.html")

@ResponseBody
public User
testConverter(@RequestBody User user)
{

System.out.println(user.getUserName());

user.setUserName("testname");

return
user;

}

上面例子中服务端返回的是个对象,@ResponseBody函数会自动将其转换为客户端要求的‘
dataType:"json",’格式。

最后需要注意的是
1,在xxx-serverlet配置文件中应该写上,以便可以使用
@ResponseBody和@RequestBody

2,发送时要写上 contentType:'application/json'

3,数组内容要用[]而不是list,用list会接收到一个map对象,而不是bean
-
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-16
Controller方法加参数,参数名和表单中名字一样就可以啊
如:public
String
test(User
user)
{
System.out.println(user.username);
}
表单中就是
这样控制台就能打印出表单中输入的username了。
第2个回答  2020-05-14
Controller方法加参数,参数名和表单中名字一样就可以啊
如:public
String
test(User
user)
{
System.out.println(user.username);
}
表单中就是
这样控制台就能打印出表单中输入的username了。
第3个回答  2019-01-09
Controller方法加参数,参数名和表单中名字一样就可以啊
如:public
String
test(User
user)
{
System.out.println(user.username);
}
表单中就是
这样控制台就能打印出表单中输入的username了。
第4个回答  2017-09-29
想要将电脑中的BIOS设置成光驱引导,这样一开机电脑就会读光驱中的光盘: 步骤是:把电脑的启动设置成【光驱启动】的具体步骤: ①重启电脑,按Del键进入BIOS设置(要快,否则会马上进入操作系统的启动),找到Advanced Bios Features(高级BIOS...
相似回答