发展党员管理系统所遇到的问题
-
json转字符串,会把null转成””,所以当向后台传对象时,必须将外键从””改为null,不然后端无法转换json
-
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。
-
如果存的是字符串,json对象必须转换成字符串,不然存储的是Object object
-
select * from user where role=”2sad”
数据库中int类型的字段,传入String类型的数据,会截取字符串进行查找
-
cookie:将”password”的时间设置为过去,也就是把它删除,期待读出空,但读出了错误的信息(很长一条)
原因是存入了User对象,里面包含了password字段,所以读出的错误信息来自于User对象。
所以将“=”写成“==”,如:document.cookie = key + “==” + val + “;expires=” + date.toUTCString();
-
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;
}
-
js数组赋值,改变其中一个,另外一个数组也会改变,vue的数据绑定
解决方法:把要赋值的数据转成json字符串,再转成json对象赋值(必须新建一个对象,不然都是指向同一个内存地址)
let list = JSON.parse(JSON.stringify(this.tableData));
-
导出表格,里面的嵌套属性无法识别
解决方法:添加新的键值对
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);
},
-
element的DatePicker日期(范围)选择器赋值不成功,发现model上的数据发生改变,而页面上的视图数据没有改变
解决方法:使用this.$set();
数组使用示列:this.$set(arr, index, val)。
对象使用示例:this.$set( obj, key, val).
-
前端插入数据时,用到刚添加的对象的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;
}