【问题标题】:Force @GrailsCompileStatic check request as AbstractMultipartHttpServletRequest强制 @GrailsCompileStatic 检查请求为 AbstractMultipartHttpServletRequest
【发布时间】:2017-10-29 02:50:00
【问题描述】:

我正在尝试将 @GrailsCompileStatic 应用于具有从请求中检索 MultipartFiles 的操作的控制器:

request.getFile('foo')

但是得到以下内容:

[静态类型检查] - 找不到匹配方法 javax.servlet.http.HttpServletRequest#getFile(java.lang.String)

是否有机会强制编译器针对 AbstractMultipartHttpServletRequest(具有 getFile(java.lang.String) 方法)而不是 HttpServletRequest 验证请求?

UPD 此解决方案有效:

MultipartFile multipartFile = ((StandardMultipartHttpServletRequest) request).getFile('myFile')

但在尝试测试时有一些奇怪的行为:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: 不能 铸造对象 'org.grails.plugins.testing.GrailsMockHttpServletRequest@2bcf856f' 使用类“org.grails.plugins.testing.GrailsMockHttpServletRequest” 上课 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest'

【问题讨论】:

    标签: grails groovy multipart static-compilation


    【解决方案1】:

    http://docs.grails.org/2.2.1/api/org/codehaus/groovy/grails/plugins/testing/GrailsMockHttpServletRequest.html

    http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/multipart/support/StandardMultipartHttpServletRequest.html

    都实现了一个接口

    org.springframework.web.multipart.MultipartHttpServletRequest

    所以就用这个

    import org.springframework.web.multipart.MultipartHttpServletRequest
    ...
    
    MultipartFile multipartFile = ((MultipartHttpServletRequest) request).getFile('myFile')
    

    【讨论】:

      猜你喜欢
      • 2022-08-02
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多