Graal, comment faire pour obtenir l'objet de demande
Graal est un objet de requête qui est défini ici.
Le problème, c'est quand j'essaie de l'utiliser, j'obtiens:
No such property: request for class:xxx
La lecture de la première 100 hits googler cette erreur se produit une suggestion:
import javax.servlet.http.HttpServletRequest
import org.springframework.web.context.request.ServletRequestAttributes
:
def my() {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
}
Cependant, cela donne:
groovy.lang.MissingPropertyException: No such property: RequestContextHolder for class: net.ohds.ReportService
- Comment obtenir une poignée sur l'objet de la requête dans le Graal?
- Comment pouvez-vous savoir à ce sujet? Si peu de gens ont demandé à cette question, il doit être documenté quelque part, ou dans certains exemple, mais je ne trouve pas non plus.
- pourquoi voulez-vous l'objet de demande de service?
Vous devez vous connecter pour publier un commentaire.
Dans Graal 3.0, d'un service obtenir le
request
objet à l'aide de:graal-app/services/com/example/MyService.groovy
Documentation:
https://docs.grails.org/latest/api/org/grails/web/util/WebUtils.html#retrieveGrailsWebRequest()
Remarque:
L'ancien
codehaus
paquet a été abandonné.Essayer de code suivant:
J'espère que vous avez probablement "groovy.lang.MissingPropertyException: Aucun propriété: RequestContextHolder pour la classe: net.ohds.ReportService" parce que vous n'avez pas d'importer le "org.springframework.web.contexte.demande.RequestContextHolder" class dans votre ReportService.
L'endroit le plus commun pour veulent accéder à la demande d'objet est dans un contrôleur. À partir d'un contrôleur il vous suffit de vous référer à la
request
bien et il sera là. Voir http://grails.org/doc/latest/ref/Controllers/request.html.La réponse à la façon d'accéder à la demande de l'objet à partir de quelque part d'autre peut dépendre de ce que l'ailleurs est.
Mise à JOUR
Je ne sais pas pourquoi vous avez de la difficulté à passer la demande à partir d'un contrôleur à un service, mais vous pouvez. Je soupçonne que vous êtes en invoquant la méthode incorrecte de l', mais quelque chose comme cela fonctionne...
Un contrôleur...
HttpServletRequest
mais vous êtes de passageHttpServlet3RequestFactory$Servlet3Security
. Êtes-vous sûrs que c'est de la même classe?import org.springframework.web.context.request.RequestContextHolder
dans votre service comme Jeff l'a suggéré?