2017-05-28 19 views
0

我想申請@GrailsCompileStatic到控制器,具有從請求檢索MultipartFiles一個動作:力@GrailsCompileStatic檢查請求的AbstractMultipartHttpServletRequest

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:不能 cast object '[email protected]' with class'org.grails.plugins.testing.GrailsMockHttpServletRequest' 類 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest'

回答

0

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