做课设时遇到的问题

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。做课设时遇到的问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

做课设时遇到的问题

 

 

大意是:未能在”窗口”上执行”fetch”:使用 GET/HEAD 方法请求不能具有主体。
原因是因为接口是get,但是又标注以requestbody(请求体)来接收参数。
说明:在get请求体中不能使用@requestBody来做请求的。

1:GET:不能使用@requestBody
2:POST:可以使用@requestBody(对于参数转化的配置必须统一)和requestParam

改成@PostMapping就没问题了

做课设时遇到的问题

 

 swagger注解之@ApiImplicitParam,前台传入的是List集合如何写

在注解中添加 allowMultiple 属性即可 

 

 

swagger报400的原因可能有很多,主要是注意格式的书写,比如map数据类型,key和value都要用双引号

做课设时遇到的问题

 

___________________________________________________

分页工具的编写:前端需要查询出来的总条数根据currentPage和pageSize截断的list数据,

 前端给我的是currentPage和pageSize,一开始我还在想,我要是用sql语句的limit分页的话,前端怎么能根据总条数来做总页数。。

现在想明白不能用limit,只能我在后台对查出来的list集合进行处理。

查了资料之后,加了guava依赖,调用了Lists的partition方法,算是完成了。。

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1.1-jre</version>
</dependency>

做课设时遇到的问题

基本算是测试通过了。。

下面的情况会报异常:

currentPage超过了最大页数(total = 3,pageSize = 10, currentPage = 2的情况,正常来说此时currentPage只会是1))会展示list最后一条数据,但是前端会根据我给的总条数来算的总页数,所以currentPage理论上不会超过total总页数,就比如3条数据每页2条只会有1~2页给用,3条数据每页10条就只会有1页给用,这种情况。所以这个bug触发的前提是用户自己在url上改参数。。)

要完善只需要限制lists.get()的参数的值就行了,大于等于0并且小于等于最大页数

 

————————————————————————————————————————————————————

easypoi简单的导入导出的使用,ExcelUtil的代码在这个博主的gitee项目里面。

参考博客:https://zhuanlan.zhihu.com/p/383896991

@PostMapping("/importExcel")
    public Result importExcel(@RequestParam("file") MultipartFile file) {
        try {
            return new Result(true,StatusCode.OK, ss.importExcel(file));
        }catch (Exception e){
            return new Result(false,StatusCode.ERROR, ss.importExcel(file));
        }
    }
@Override
    public String importExcel(MultipartFile file) {
        ImportParams importParams = new ImportParams();
        //表格标题行数,默认0
        importParams.setTitleRows(1);
        //是否需要校验上传的Excel
        importParams.setNeedVerify(true);
        //告诉easypoi我们自定义的验证器
//        importParams.setVerifyHandler(userVerifyHandler);
        ExcelImportResult<SchoolmateDTO> result = null;
        try {
            result = ExcelImportUtil.importExcelMore(file.getInputStream(),SchoolmateDTO.class,importParams);
            if (!result.isVerifyFail() && !CollectionUtils.isEmpty(result.getList())) {
                for (SchoolmateDTO vo : result.getList()) {
                    Schoolmate sm = new Schoolmate();
                    BeanUtils.copyProperties(vo,sm);
                    this.insert(sm);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return "文档校验失败";
        }
        return "导入成功";
    }

做课设时遇到的问题

 导出也是根据上面的博客做的。

 我的导出可以正常导出Excel,但是会有中文乱码的问题

做课设时遇到的问题

 这个是swagger的问题,实际上我直接访问对应的url,就可以拿到excel。而前端主要是createElement(‘a’),设置href就可以调用接口了。

做课设时遇到的问题

——————————————————————————————————————————————————————————————————

跨域问题

做课设时遇到的问题

 

 注意这里,我本来写的是@GetMapping(“/”),前端用的就是…/classinfo/,但是这样访问的话,第一次会跨域,第二次就不会(我也不知道具体的原因)。。

但是改成上面那样,就没问题了,第一次访问也不会跨域。。具体是什么配置起作用了暂时不清楚。

——————————————————————————————————————————————————————————————————————

做课设时遇到的问题

 

 

做课设时遇到的问题

 

 做课设时遇到的问题

 

 可以看到,虽然加了@Component,但是没有实现自动装配。

做课设时遇到的问题

 

 这样写没用嗷。@SpringBootApplication本来就会扫描当前包和子包的文件。

最后发现是文件本身的问题。。

做课设时遇到的问题

 

 这样写也没有解决问题,handler还是null,但是最骚的是这能骗过idea,@Autowired不会提示说【自动装配成员必须在有效的 Spring bean 中定义(@Component|@Service|…) 】中。。

忽然想起,@Service应该写到Service上,不是它的impl类上。。

做课设时遇到的问题

 

 还是没卵用。。

直接上结果吧。

做课设时遇到的问题

 

 说实话这并不算解决了问题,但是查了一下代码发现是service和controller,老师说不能过多地用框架,所以我有很大一部分是用原生JDBC(比如service的装配是用Service s = new serviceImpl()),这种畸形的开发导致了这种问题,我新开了一个project用纯springboot+jpa做了excel导入导出并不会有这种问题。。

先用图上那种这种跳过问题的解决方式。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199820.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!