遇到的种种BUG

259 阅读6分钟

[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>

image-20211229151058798

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了

image-20220308211251984

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

问题描述

image-20220711085610069

**原因:**methods方法报裹住了queryParams

解决办法:

将queryParams与methods同级

8、发送delete请求无法交互

问题描述:

在删除信息时:遇到了前端传的参数后端接收时,发生转换异常或者接收到的参数为空

原因:

因为后端接收的参数是一个 整型 ,开始前端传的是Json格式数据

解决办法:

将代码改为以下形式

image-20220712094913338

image-20220712094719518

Mybatis的坑

1 Public Key Retrieval is not allowed

我的解决办法:

在url后面加上: allowPublicKeyRetrieval=true (注意与前面的连接符)

2 从数据库获取的时间成了英文,有CST

image-20220305230250993

解决办法

@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语言中

image-20220404223026921

下面就总结下原因:

解析的时候会先解析关键字,然后才组装成为sql进行查询

如何避免: 第一种方法是最靠谱的(就是不要去注释,不要就删掉)

第一种方法: 在这种情况下,尽量就写一条 sql语句, 不要写了不用就注释(快捷键注释,ctrl+/),这样的话,有些内容很可能就会被解析为关键字,比如#{ "参数"}

第二种方法:用这个注释 HTML的注释, 这样就不会被解析到,

而 ctrl+/ 这种快捷键的注释 是 两个横岗 -- ,这种注释就不行(不知道Idea这个软件怎么回事,***)

再记录下一个小知识点

当两个数据库表的 主键名字是一样时,可以 采用别名,这时在resultMap要将对应的column 改成别名

image-20220404221831498

image-20220404221907490

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)时,感觉很容易,以为比较顺利,但总是事与愿违,一运行启动类,就给我报错(如图)

image.png 错误的信息:

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

改了后就没问题了

image.png

使用工具

1、IDEA

1.1用了maven后打开软件很慢

不知道大家有没有这种经历,用了maven后,打开一个项目再这个界面可以卡一到两分钟

image-20220420225537149

看了网上说的什么,改什么参数,试了一阵发现效果不理想,折腾了好一阵,找到了解决办法!!!

我的解决办法:

关闭这个这个插件 Maven Archetypes

关闭后,速度又回到了从前那飞一般的速度,哈哈!!!

又遇到这个问题的小伙伴快去试一试吧

image-20220420230018868

2、powerdesigner

2.1 允许不同对象中存在相同属性名

问题描述:

在设计数据库表时,遇到一个问题,有一张表的属性名和另一张表的属性名相同,按照常理来说应该是可以的,但是软件给我报了个Error(如图),

image-20220705154105221

解决办法:

对软件进行一些设置

步骤如下

Tools -> Model options... -> Unique code (有两个,分别把前面的√去掉)

image-20220705154637918

image-20220705154905914