强制@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'
和
都实现了一个接口
org.springframework.web.multipart.MultipartHttpServletRequest
所以就用这个
import org.springframework.web.multipart.MultipartHttpServletRequest
...
MultipartFile multipartFile = ((MultipartHttpServletRequest) request).getFile('myFile')
我正在尝试将 @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'
和
都实现了一个接口
org.springframework.web.multipart.MultipartHttpServletRequest
所以就用这个
import org.springframework.web.multipart.MultipartHttpServletRequest
...
MultipartFile multipartFile = ((MultipartHttpServletRequest) request).getFile('myFile')