java报错总结!!springboot3+vue2项目web服务层报错总结

java入门学习,随手记录一下开发过程中产生的报错,有些错误是网上搜索再加上自己尝试,随手引用了一些其他人的记录,也是留给自己看的,或是希望能对其他初学者有帮助

会持续更新!!!!!

1、Autowired members must be defined in valid Spring bean

自动注入对象必须定义在有效的spring bean内,也就是说只有本身作为bean的类才能注入其他对象。

2、‘PageRequest(int, int, org.springframework.data.domain.Sort)’ has protected access in ‘org.springframework.data.domain.PageRequest’

使用Pageable page = new PageRequest(1, 1, Sort.Direction.ASC) 报错

由于springboot2.2.1以上版本PageRequest不能在实例化,改用

Pageable page = PageRequest.of(1, 1, Sort.Direction.ASC)

如何写java单元测试

引入了spring-boot-starter-test的话,就包含了mockito的依赖了。

3、Junit测试Gradle项目时报错:No tests found for given includes: xxxx.xxxxTest**

gradle设置的run test running改为IDEA

4.postman测试接口报错:For queries with named parameters you need to provide names for method parameters.

gradle设置的build and run using 设置为gradle

5.java Cannot resolve constructor 不能解析构造函数

检查构造函数传参的顺序和数量是否正确

6.SpringBoot项目启动失败报错Annotation-specified bean name ‘xx‘ for bean class [xxx] conflicts with existing

有同名的文件,搜索找到同名文件,无用删除,有用的话就改名。找不到的话可能是缓存,清除idea缓存。

7.post上传文件功能,接口保存数据时报错:could not execute statement; SQL [n/a]; constraint [null];

接口方法没有@RequestBody
解决:
添加@RequestBody

8.post上传文件,使用postman测试报错:Data truncation: Data too long for column ‘xxx’ at row 1

由于数据库建立时候没有分配好字符的大小

查看数据库中xxx字段的长度,增加该长度

9.post上传文件,使用postman测试报错:Content type ‘multipart/form-data;boundary=----------0467042;charset=UTF-8‘ not supported

不支持’multipart/form-data;boundary=-------------------------036764477110441760467042;charset=UTF-8’请求类型。

注解 支持的类型 支持的请求类型 支持的Content-Type 请求示例

@PathVariable 	url 	GET 	所有 	/test/{id}

@RequestParam 	url 	GET 	所有 	/test?id=1

				Body 	POST/PUT/DELETE/PATCH 	form-data或x-www.form-urlencoded 	id:1

@RequestBody 	Body 	POST/PUT/DELETE/PATCH 	json 	{"id":1}

由于传递formData类型数据,删除@RequestBody,改成@RequestParam

@RequestBody

@RequestBody用来接收前端传递给后端的json字符串中的数据,GET方式的请求一般通过URL中携带key-value参数,而@RequestBody接收的是请求体中的数据(json格式的数据,只有请求体中能保存json),所以使用@RequestBody接收数据的时候必须是POST方式等方式。
@RequestBody与@RequestParam()可以同时使用,但@RequestBody最多只能有一个,而@RequestParam()可以多个。

@RequestParam

@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。

可以用于接收URL中的参数并捆绑到方法的参数中,也可以接受post请求体中的Content-Type 为 application/x-www-form-urlencoded的数据。(post比较常用的是json格式数据)

@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)

value:参数的key
required:是否为必须,请求中必须包含该参数,如果不包含就报错。
defaultValue:代替的默认参数值,设置后required将自动置false

@PostMapping("/upload")
  public ReturnResult upload(
      @RequestHeader(value = REQUEST_HEADER_TOKEN) String token,
      @Validated @RequestBody UploadDto uploadDto,
      BindingResult bindingResult) {
    BindingParamUtil.checkParam(bindingResult);
    TokenProperties tokenProperties = jwtTokenProvider.parseToken(token);
    ReturnResult upload = fileService.upload(uploadDto, tokenProperties);
    return upload;
  }

改成

@PostMapping("/upload")
public ReturnResult upload(
    @RequestHeader(value = REQUEST_HEADER_TOKEN) String token,
    @RequestParam("file") MultipartFile file,
    @RequestParam("fileType") String fileType) {
  TokenProperties tokenProperties = jwtTokenProvider.parseToken(token);
  UploadDto uploadDto = new UploadDto(file, fileType);
  ReturnResult upload = fileService.upload(uploadDto, tokenProperties);
  return upload;
}

10.Executing an update/delete query

在方法上添加注解@Modifying,并且需要在类或是方法上加上事务注解@Transactional(rollbackFor = Exception.class)

4.根据请求头不同进行不同的逻辑操作

@PutMapping("/devices/{id}")

public Response<Object> getList(@PathVariable Integer id, @RequestHeader(value = "Modify-Content", require = false) String modifyMark, HttpServletRequest request) {

String info = "info";

if(Object.equals(modifyMark, info)) {

DeviceInfoModifyVO.setDeviceName(request.getParameter("deviceName"))

}else {

}

}

11.Unable to locate Attribute with the the given name [x] on this ManagedType

在Spring中使用JPA操作数据库,然后使用复杂查询条件中的关联查询。这里的字段userOpenId是WeekSummary实体中的字段,在User表中,并不是叫这个,所以在查询的时候就找不到这个字段。把userOpenId字段改成联表中的字段名称

12.ailed to parse multipart servlet request

配置路径未生效或不存在,选择一个已经存在的路径

1、配置地址为服务器肯定会存在的路径
2、程序中配置路径前首先检查有没有此路径

fileUtil.saveToFile(file, filepath)

如果是相对路径,存放在项目的路径下的文件夹下

13.Required request body is missing: public

检查vue的request.js拦截器中

  1. 要写传参

  2. post对应的传参是data, get对应的传参是params

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spring Boot是一种用于构建Java应用程序的开发框架,而Vue.js是一个用于构建用户界面的JavaScript框架。Spring BootVue.js的结合使用可以实现前后端分离的项目开发,其中包括实战pdf的生成和展示功能。 首先,我们可以使用Spring Boot来搭建后端接口服务。通过使用Spring Boot的Web模块,我们可以很方便地创建RESTful API,用于接收前端请求并处理数据。在这个项目中,我们可以设计一个用于生成pdf的API,在接收到相关请求时,利用Java的pdf生成库(如iText)来生成pdf文档,并将生成的pdf保存到服务器或返回给前端。 接下来,我们需要利用Vue.js来创建前端界面,并与后端的API进行交互。我们可以使用Vue.js的组件化和路由功能,创建多个页面来展示pdf文档。对于pdf的展示,可以使用Vue.js的插件或引入第三方pdf阅读器库(如pdf.js),来实现在前端浏览器中展示pdf文档的功能。 在前端界面中,我们可以设计一个上传pdf的功能,用户可以选择本地的pdf文件进行上传,并通过调用后端的API来将pdf保存到服务器,然后在页面中展示出来。 除了生成和展示pdf文档的功能之外,我们还可以通过Spring BootVue.js的结合来实现其他的功能,比如用户登录、权限控制、pdf搜索和标注等等。通过使用Spring BootVue.js这样的前后端分离的开发方式,我们可以更好地实现项目的模块化、可扩展性和易维护性。 总结来说,通过结合使用Spring BootVue.js,我们可以实现一个具有pdf生成和展示功能的项目。使用Spring Boot来搭建后端接口服务,并利用Java的pdf生成库来生成pdf文档;使用Vue.js来创建前端界面,并通过调用后端的API来展示和处理pdf文档。这样的开发方式可以更好地满足项目的需求,同时提高开发效率和用户体验。 ### 回答2: Spring Boot 是一个 Java 开发框架,用于简化和加速 Spring 应用程序的开发Vue 是一个流行的 JavaScript 框架,用于构建用户界面。Spring BootVue 可以一起使用,实现全栈开发。 PDF 是一种常见的文件格式,用于在不同平台上展示、共享和打印文档。在一个实践项目中使用 Spring Boot 3 和 Vue 3 来处理 PDF 文件是可行的。 首先,可以使用 Spring Boot 来创建一个 RESTful API,用于处理 PDF 文件的上传、下载和其他操作。Spring Boot 提供了丰富的库和功能,可以轻松处理文件上传和下载的逻辑。 然后,可以使用 Vue 3 来构建一个用户界面,用于展示 PDF 文件的列表和操作。Vue 3 提供了许多强大的工具和组件,可以方便地处理用户界面的交互和数据传输。 在实际项目中,可以使用 Spring Boot 来处理用户上传的 PDF 文件,并将其保存到服务器上的指定位置。同时,可以使用 Vue 3 构建一个界面,展示已上传的 PDF 文件列表,并提供下载和删除等功能。 为了实现这个功能,可以使用 Spring Boot 的文件上传功能来处理用户上传的 PDF 文件,并将其保存到指定的目录。然后,可以使用 Vue 3 的组件和路由来构建一个用户界面,用于展示和操作已上传的 PDF 文件。 总结来说,Spring Boot 3 和 Vue 3 可以一起使用,实现一个实战项目,用于处理 PDF 文件的上传、下载和其他操作。使用 Spring Boot 来处理文件上传和下载的逻辑,使用 Vue 3 来构建用户界面,展示和操作已上传的 PDF 文件。这样可以实现一个功能完善的 PDF 文件处理项目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值