[toc]
JavaWeb
1 无法解析${}的可能原因:
webapp那个版本太低,要进行升级
我的解决办法:
把web.xml的内容换掉, 换之前要记得备份,记得备份,记得备份
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
Vue
1、axios的this陷阱
这里有个坑: 这里的this才是vue的this 在beforeCreated发起会太早
<script>
let vue = new Vue({
el: "#app",
data: {
list:[]
},
created(){
//这里有个坑: 这里的this才是vue的this 在beforeCreated发起会太早
let self = this;
axios.get("http://localhost:8080/users").then(function (response){
console.log(response)
self.list=response.data.data;
})
}
});
</script>
2、 @click="delete" 是不行的
可能delete是关键字的原因吧
<tr v-for="item in list">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.time}}</td>
<td>
<!-- 这里不要写delete-->
<button @click="del(item.id)">删除</button>
</td>
</tr>
3、configuration has an unknown property 'plugin'. These properties are valid:
这个错误其实就是少加了个 s
把19行的plugin 改成 plugins 就ok了
4 、 HtmlWebpackPlugin didn’t return html
解决方案:升级HtmlWebpackPlugin 插件,webpack 5.22.0以上版本对应 html-webpack-plugin 5.3.0 上版本
package.json
{
"devDependencies": {
"clean-webpack-plugin": "^4.0.0",
"css-loader": "^6.7.1",
"html-webpack-plugin": "^5.5.0",
"style-loader": "^3.3.1",
"webpack": "^5.4.0",
"webpack-cli": "^4.9.1",
"webpack-dev-server": "^4.6.0"
},
"dependencies": {
"bootstrap3": "^3.3.5",
"jquery": "^3.6.0"
}
}
5 、在前端 webpack中 修改了 配置,记得重启服务器
若修改了配置,一定要重启服务,一定要重启服务,一定要重启服务
6、方法执行顺序不对
问题描述:
通过调试发现,写在updateData()方法后面的findAll()方法先执行了,执行的顺序和写的顺序不对
原因:
axios是异步的
解决办法:
把后面要执行的那个方法设置延迟执行
代码如下
//发送请求 更新数据
this.updateData();
//让 findAll函数延迟500毫秒执行
setTimeout(()=>{
this.findAll();
},500)
7、 Method "queryParams" has type "object" in the definition
问题描述
**原因:**methods方法报裹住了queryParams
解决办法:
将queryParams与methods同级
8、发送delete请求无法交互
问题描述:
在删除信息时:遇到了前端传的参数后端接收时,发生转换异常或者接收到的参数为空
原因:
因为后端接收的参数是一个 整型 ,开始前端传的是Json格式数据
解决办法:
将代码改为以下形式
Mybatis的坑
1 Public Key Retrieval is not allowed
我的解决办法:
在url后面加上: allowPublicKeyRetrieval=true (注意与前面的连接符)
2 从数据库获取的时间成了英文,有CST
解决办法
@JsonFormat(pattern = "yyyy-MM-dd")
private Date time;
3 mybatis的mapper配置文件中,在标签中能不加注释就不加注释
今天的项目出的bug真让人心累
一请求就给我报错
{"msg":"nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='markId', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).","code":500}
现在回想起来,真特么无语,当时看了报错信息明明知道是参数问题,但看代码的话,参数又确实没问题(也是当时警觉性不够),在那无语了半小时,
在一顿疯狂重启服务器后,看那注释有点不爽,就把它删了(就下面第99行的代码), 然后就特么神奇的运行起了...... 后面就一直C语言中
下面就总结下原因:
解析的时候会先解析关键字,然后才组装成为sql进行查询
如何避免: 第一种方法是最靠谱的(就是不要去注释,不要就删掉)
第一种方法: 在这种情况下,尽量就写一条 sql语句, 不要写了不用就注释(快捷键注释,ctrl+/),这样的话,有些内容很可能就会被解析为关键字,比如#{ "参数"}
第二种方法:用这个注释 HTML的注释, 这样就不会被解析到,
而 ctrl+/ 这种快捷键的注释 是 两个横岗 -- ,这种注释就不行(不知道Idea这个软件怎么回事,***)
再记录下一个小知识点
当两个数据库表的 主键名字是一样时,可以 采用别名,这时在resultMap要将对应的column 改成别名
4、使用动态SQL if标签报错
问题描述
今天在写动态SQL时,使用了if标签,在调用接口时,突然报错了,信息如下
"message": "nested exception is org.apache.ibatis.exceptions.PersistenceException: \n### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.LinkedHashMap and java.lang.String\n### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.LinkedHashMap and java.lang.String",
原因 看到报错可把我给吓坏了,我仔细检查了SQL语句,怎么看也没有问题,后面问了下亲爱的度娘,才得知了真相(就是自己太菜了)
原因:if标签使用错误
解决办法:
正确样例:
注意: if中的test中的name,接口那边需要传实体类,且实体类中也需要有对应的属性
<if test="name != null and name !=''">
name=#{name},
</if>
错误样例:
<if test="#{name} != null and #{name} !=''">
name=#{name},
</if>
5、传mybatis为单个参数时,报没有getter
问题描述
在运行时,报了个There is no getter for property named 'xxx' in 'class java.lang.String'
原因
接口那边穿的不是 实体类, 接口传的是 xxx(String name)
正确代码
<if test="_parameter != null and _parameter !=''">
name=#{name},
</if>
错误代码:
<if test="name != null and name !=''">
name=#{name},
</if>
下满就总结下原因:
因为接口处传的不是实体类,所以不能用 在 test中不能使用 属性名,需要使用 mybatis内置对象 __parameter
Swagger
Idea集成Swagger报错
今天在Springboot(版本 2.6.5)中集成Swagger(版本 2.9.2)时,感觉很容易,以为比较顺利,但总是事与愿违,一运行启动类,就给我报错(如图)
错误的信息:
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
经过一番折腾,最终找到了解决办法
引起报错的原因是:
SpringBoot的版本太高了,Springfox 假设 Spring MVC 的路径匹配策略是 ant-path-matcher,而 Spring Boot 2.6.x版本的默认匹配策略是 path_pattern_matcher
我的解决办法:
将Spring MVC 的路径匹配策略修改为 ant-path-matcher
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
改了后就没问题了
使用工具
1、IDEA
1.1用了maven后打开软件很慢
不知道大家有没有这种经历,用了maven后,打开一个项目再这个界面可以卡一到两分钟
看了网上说的什么,改什么参数,试了一阵发现效果不理想,折腾了好一阵,找到了解决办法!!!
我的解决办法:
关闭这个这个插件 Maven Archetypes
关闭后,速度又回到了从前那飞一般的速度,哈哈!!!
又遇到这个问题的小伙伴快去试一试吧
2、powerdesigner
2.1 允许不同对象中存在相同属性名
问题描述:
在设计数据库表时,遇到一个问题,有一张表的属性名和另一张表的属性名相同,按照常理来说应该是可以的,但是软件给我报了个Error(如图),
解决办法:
对软件进行一些设置
步骤如下
Tools -> Model options... -> Unique code (有两个,分别把前面的√去掉)