0

我正在尝试应用于@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”的对象“org.grails.plugins.testing.GrailsMockHttpServletRequest@2bcf856f”转换为类“org.springframework.web”。 multipart.support.StandardMultipartHttpServletRequest'

4

1 回答 1

2

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')
于 2017-05-29T07:29:49.507 回答