强制@GrailsCompileStatic 检查请求作为 AbstractMultipartHttpServletRequest

Force @GrailsCompileStatic check request as AbstractMultipartHttpServletRequest

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

request.getFile('foo')

但得到以下结果:

[Static type checking] - Cannot find matching method 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: Cannot cast object 'org.grails.plugins.testing.GrailsMockHttpServletRequest@2bcf856f' with class 'org.grails.plugins.testing.GrailsMockHttpServletRequest' to class 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest'

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')