后端接收对象的两种方式
1. vue 发送ajax请求传递对象:<script>import {addUser,updateUser,delUser} from "@/api/table.js"export default {data() {return {//新增弹出框dialog: false,//表单form: {id: '',name: '',sex: '',age: '',
·
1. vue 发送ajax请求传递对象:
<script>
import {
addUser,
updateUser,
delUser
} from "@/api/table.js"
export default {
data() {
return {
//新增弹出框
dialog: false,
//表单
form: {
id: '',
name: '',
sex: '',
age: '',
phone: '',
adress: '',
},
//查看 || 修改标识
logo: "",
//表单是否禁用
formDisabled: false,
}
},
methods: {
// 保存
save(form) {
if (this.logo == "add") {
this.$refs[form].validate((valid) => {
if (valid) {
addUser(this.form).then(response => {
//关闭弹框
this.dialog = false;
//调用查询方法
this.$emit("getAllUsers");
})
} else {
this.$message({
type: 'error',
message: '校验失败',
});
}
});
} else if (this.logo == "update") {
this.$confirm('您确定要修改此条数据 ?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$refs[form].validate((valid) => {
if (valid) {
updateUser(this.form).then(response => {
//关闭弹框
this.dialog = false;
//调用查询方法
this.$emit("getAllUsers");
})
} else {
this.$message({
type: 'error',
message: '校验失败',
});
}
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消修改'
});
});
}
},
},
}
</script>
2. table.js 请求后端地址
import request from '@/utils/request'
import qs from 'qs'
//修改用户信息
export function updateUser(params){
return request({
url: '/user/updateUser',
method: 'post',
// qs.stringify : 将对象序列化成url的形式,以&方式进行拼接
data: qs.stringify({
// JSON.stringify: 将javascript值转换成json字符串
bean: JSON.stringify(params)
})
})
}
3. 后端Controller层接收对象的两种方式
1. 第一种方式
/*
* 功能描述: DOTO 修改用户信息
* @Param: [user]
* @Date: 2020/9/10 17:38
*/
@RequestMapping(value = "/updateUser",method = RequestMethod.POST)
public Map<String,Object> updateUser(HttpServletRequest request){
Map<String,Object> resultMap = new HashMap<>();
try {
String bean = request.getParameter("bean");
User user = null;
if(null != bean && !"".equals(bean)){
//将java对象转换成json对象
JSONObject JsonObjectBean = JSONObject.fromObject(bean);
//JSON对象转换成Java对象的两种方式
// 1:第一种
user = (User)JSONObject.toBean(JsonObjectBean,User.class);
// 2:第二种
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(User.class);
user = (User) JSONSerializer.toJava(JsonObjectBean,jsonConfig);
//JSONArray转换为List<bean>的两种方法:
/*
JSONArray userArray = JSONArray.fromObject("[" + json.toString() + "]");
List<User> userList1 = (List<User>) JSONArray.toCollection(userArray, User.class);
List<User> userList2 = (List<User>) JSONSerializer.toJava(userArray, jsonConfig);
*/
}
//调用service层修改数据
int resultData = userService.updateUser(user);
ReturnUtil.createSuccess(resultMap,resultData, CommonRest.UPDATE_SUCCESS);
} catch (Exception e) {
log.error(e.getMessage(),e);
ReturnUtil.createError(resultMap,CommonRest.UPDATE_FAILD);
}
return resultMap ;
}
2. 第二种方式
@RequestMapping(value = "/updateUser",method = RequestMethod.POST)
public Map<String,Object> updateUser(@RequestBody User user){
//通过注解@RequestBody接收 Requset payloa 里的参数
}
4. 遍历参数时会报错: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
// 解决方案如下
Object object = expressList.get("exList");
JSONArray jsonObject = JSONArray.fromObject(object);
List<ExpressEmployeeInfoExt2> list2 = (List<ExpressEmployeeInfoExt2>) JSONArray.toCollection(jsonObject, ExpressEmployeeInfoExt2.class);
更多推荐
已为社区贡献1条内容
所有评论(0)