发展党员管理系统所遇到的问题

  1. json转字符串,会把null转成"",所以当向后台传对象时,必须将外键从""改为null,不然后端无法转换json

  1. post提交了字符串,而后台用了@requestBody注解,应该提交对象

[http-nio-80-exec-5] WARN  o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported]

前端请求传Json对象则后端使用@RequestParam;

前端请求传Json对象的字符串则后端使用@RequestBody。

  1. 如果存的是字符串,json对象必须转换成字符串,不然存储的是Object object

  1. select * from user where role=‘2sad‘

数据库中int类型的字段,传入String类型的数据,会截取字符串进行查找

  1. cookie:将"password"的时间设置为过去,也就是把它删除,期待读出空,但读出了错误的信息(很长一条)

原因是存入了User对象,里面包含了password字段,所以读出的错误信息来自于User对象。

所以将“=”写成“==”,如:document.cookie = key + "==" + val + ";expires=" + date.toUTCString();

  1. element时区问题,element的时间是世界时间,数据库存的是中国时间,世界时间慢8小时,所以页面显示早一天

解决方法:显示前,将时间转化

// 自定义格式化时间,避免时区误差
Vue.prototype.formatterTime = (time) => {
 const date = new Date(time);
 const year = date.getFullYear();
 const month = date.getMonth() + 1;
 const day = date.getDate();
 /*const hour = date.getHours()
const minutes = date.getMinutes()
const seconds = date.getSeconds()
const dateTime = year + ‘-‘ + month + ‘-‘ + day + ‘ ‘ + checkLength(hour) + ‘:‘ + checkLength(minutes) + ‘:‘ + checkLength(seconds)*/
 const dateTime = year + ‘-‘ + month + ‘-‘ + day;
 return dateTime;
}
?
// 时分秒为个位时,前面加0
function checkLength (str){
 str = str.toString();
 if (str.length < 2) {
   str = ‘0‘ + str;
}
 return str;
}
  1. js数组赋值,改变其中一个,另外一个数组也会改变,vue的数据绑定

解决方法:把要赋值的数据转成json字符串,再转成json对象赋值(必须新建一个对象,不然都是指向同一个内存地址)

let list = JSON.parse(JSON.stringify(this.tableData));

  1. 导出表格,里面的嵌套属性无法识别

解决方法:添加新的键值对

exportXlsx() {
 let tHeader = [‘学号‘,‘姓名‘,‘性别‘,‘专业‘,‘年级‘,‘二级基层党组织‘,‘党支部‘];
 let filterVal = [‘sno‘,‘name‘,‘sex‘,‘major‘,‘grade‘,‘secondParty‘,‘partyBranch‘];
 let list = JSON.parse(JSON.stringify(this.tableData));
 for (let i = 0; i < list.length; i++) {
   list[i].sex=list[i].sex == ‘0‘ ? ‘男‘ : ‘女‘;
   list[i].secondParty=list[i].user.secondParty.name;
   list[i].partyBranch=list[i].user.partyBranch.name;
}
 let name = ‘发展党员名单‘;
 this.exportExcel(tHeader,filterVal,list,name);
},
  1. element的DatePicker日期(范围)选择器赋值不成功,发现model上的数据发生改变,而页面上的视图数据没有改变

解决方法:使用this.$set();

数组使用示列:this.$set(arr, index, val)。

对象使用示例:this.$set( obj, key, val).

  1. 前端插入数据时,用到刚添加的对象的id,但id为数据库自增的,获取不到

解决方法:在xml里加一个主键自增

<insert id="insert" keyProperty="id"  useGeneratedKeys="true" parameterType="User">
  insert into user(username,password,state,role,second_party,party_branch,updatetime)
  values(#{username},#{password},#{state},#{role.id},#{secondParty.id},#{partyBranch.id},sysdate())
</insert>
@PostMapping("/add")
public ResultMessage add(@RequestBody User user) {
   logger.debug("enter add");
   logger.debug("user=" + user);
   boolean result = service.add(user);
   //logger.debug("userId="+user.getId()); 此时的user里有id
   ResultMessage resultMessage;
   if (result) {
       resultMessage = new ResultMessage(true, user, 0, "添加成功");
  } else {
       resultMessage = new ResultMessage(false, null, 0, "添加失败");
  }
   return resultMessage;
}

 

 

发展党员管理系统所遇到的问题

上一篇:WPF中TreeView控件数据绑定和后台动态添加数据(一)


下一篇:BiliBili常用API