前言:我在springMVC中使用FreeMarkerViewResolver中,遇到的一个超大的坑,我一直没想到,因为FreeMarker依赖spring-context-support,所以很多人把一开始使用FreeMarkerViewResolver就忽略掉了之前已经添加的spring-context这个依赖,两者冲突导致,控制器的接收参数功能出现问题,下面详解

首先为啥会出现这种问题?

我把异常截图放出来
FreeMarkerViewResolver使用中的坑
异常信息:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
        这里大概的意思就是这种参数类型是无效的,且没有从类中找到这种参数的信息,其实也就是在控制器的参数上没加@RequestParma指定参数名字,但是我们都知道之前根本不用指定的情况下也能接收参数,所以这里就出现了一个mvc的接收参数功能上的缺陷.
        我当时在百度上查了很久,很多人出现这种异常,但是解决方法都和情况和我的都不一样,所以不了了之,直到今天我又去使用了,还是这种问题,我就觉得自己排查下原因,排了很久都没有结果,最后我认为可能是在依赖上的问题,但是我排查了很久都不觉得有什么问题.
       最后我还是锁定在了spring-contextspring-contex-support这两个依赖上,我在想会不会这两个依赖发生了冲突,结果果不其然,我把spring-context-support删掉以后,把视图解析器换回了InternalResourceViewResolver,果然在形参上不加@requestParma也没问题了,最后我百度看了下spring-context-support,发现它是对spring-context的拓展,其功能已经包含了spring-context,难怪会出现版本冲突,最后我换回FreeMarkerViewResolver视图解析器,把spring-context删掉,把spring-context-support加回去,果然没问题,之前的问题都解决了,这里需要注意的是,测试的时候,如果是maven项目,需要执行clean,然后再重新编译打包,不然残留之前的编译文件,可能还是有问题。

结论:需要用到FreeMarkerViewResolver 的时候把之前填加的spring-context删出,留下spring-context-support,不用的话也可以留着这一个,总之我不管用不用我还是觉得使用spring-context-support更好,比较包含了spring-context的一切功能,万一以后要用到FreeMark呢

希望看到这篇文章的同学出现过这种问题能解决哦

相关文章:

  • 2021-09-19
  • 2022-01-10
  • 2022-01-18
  • 2022-12-23
  • 2021-10-10
  • 2021-12-04
  • 2021-07-19
  • 2021-10-08
猜你喜欢
  • 2021-04-19
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2021-09-21
  • 2021-08-22
相关资源
相似解决方案