2013-10-08 17 views
5

Aby uzyskać HttpServletRequest w przechwytujących użyłem poniżej kodu:Get HttpServletRequest w Struts 2 kolektora

HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(HTTP_REQUEST); 

starałem się wdrożyć ServletRequestAware w przechwytujących, ale to nie działało.

Czy są jakieś lepsze sposoby na uzyskanie HttpServletRequest w Interceptorze?!

+0

Dlaczego musisz 'HttpServletRequest' w kolektora? –

+0

Chcę rozwijać i przechwytywać, które uniemożliwiają żądanie Ajax wywoływania bezpośrednio przez url. Zobacz http://stackoverflow.com/questions/14621539/how-to-determine-whether-a-request-is-ajax-or-normal. Ten przechwytujący będzie znajdować się w stosie przechwytującym, który uniemożliwi takie żądania. –

Odpowiedz

4

Obiekt serwletu, do którego można uzyskać odwołanie do przechwytywacza servletConfig. Po wywołaniu tego przechwytywacza można uzyskać informacje o serwletach od ServletActionContext.

HttpServletRequest request = ServletActionContext.getRequest(); 
0

dostaniesz ActionInvoction spróbuj getInvocationContext() zwróci instancję "ActionContext" spróbuj .get(HTTP_REQUEST); na ten temat.

lub

użycie

ServletActionContext.getRequest() 
4

Trzeba użyć ActionInvocation#getInvocationContext() odzyskać swoją prośbę.

public String intercept(ActionInvocation invocation) throws Exception { 
    ActionContext context = invocation.getInvocationContext(); 
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); 
    // ... 
} 
+1

To powinna być zatwierdzona odpowiedź na używanie wewnętrznego przechwytywacza. –

1

użycie

final HttpServletRequest request = (HttpServletRequest) ActionContext.getContext() 
               .get(ServletActionContext.HTTP_REQUEST); 

pracował dla mnie

+0

To jest ten sam kod, który jest w OP. –

Powiązane problemy