今天是复工的第四天,在调试年前项目时发现,图片上传功能出现异常,考虑到项目加了拦截器,怀疑是拦截器设置为题,查看代码后,确实没有设置,设置方法为
interceptorRegistration.excludePathPatterns("不想被拦截的URI路径");
添加后测试,问题依旧,图片可以接收到,但是传的值未接收到,尝试添加@RequestPart、 @RequestParam、@PathVariable问题依旧。
原来接收参数的方法为
request.getParameter("参数名");
借用Postman进行调试,Postman截图:
@RequestPart和@RequestParam区别
权威分析@RequestParam和@RequestPart 的区别(官方文档)
方法在添加注解后,均会抛出异常
有资料显示从request中只能获取一次post方式提交的参数所以测试拦截器,是否存在取值问题。
在测试拦截器功能时,发现了个两个拦截器,
ResourceUrlProviderExposingInterceptort和ConversionServiceExposingInterceptor进入源码后发现,跟我 接收不到值没有关系。
再次查询资料multipart/form-data post 方法提交表单,后台获取不到数据,debug,发现billId在MultipartHttpServletRequest中可以取到值
虽修改取方式为
String billId = multipartRequest.getParameter("billId");
经过测试,问题解决。
启动设置如下:
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
public class BootApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(BootApplication.class, args);
}
}
yml设置如下:
spring:
servlet:
multipart:
max-request-size: 10MB
max-file-size: 10MB
enabled: true`
对于为什么使用注解会抛异常的问题,还是没有思路,希望有哪位大神能指点一二。