2017-05-28 3 views
0

AbstractMultipartHttpServletRequest Je suis en train d'appliquer @GrailsCompileStatic au contrôleur qui a une action qui récupère MultipartFiles de demande:force @GrailsCompileStatic contrôle demande que

request.getFile('foo') 

Mais obtenir ce qui suit:

[type statique vérification] - Impossible de trouver la méthode correspondante javax.servlet.http.HttpServletRequest # getFile (java.lang.String)

Est-il possible de forcer le compilateur à vérifier la requête par rapport à AbstractMultipartHttpServletRequest (qui a la méthode getFile (java.lang.String)) au lieu de HttpServletRequest?

UPD Cette solution fonctionne:

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

Mais a un comportement étrange en essayant de le tester:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Impossible lancer l'objet '[email protected]' avec la classe 'org.grails.plugins.testing.GrailsMockHttpServletRequest' à la classe 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest'

Répondre

0

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

et

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

deux implémente une interface

org.springframework.web.multipart.MultipartHttpServletRequest

donc il suffit d'utiliser ce

import org.springframework.web.multipart.MultipartHttpServletRequest 
... 

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