2011-05-04 2 views
0

J'utilise HttpServletResponseWrapper pour capturer le code d'état dans un filtre de servlet. Cela semble marcher correctement.Code d'état HttpServletResponseWrapper = 0

J'ai un statut de 200 quand tout va bien. Cependant, lorsque le serveur de l'application ne peut pas trouver l'élément demandé, je récupère un 0. Mais dans le navigateur, il apparaît comme un 404.

Quelqu'un peut-il expliquer cela?

EDIT: Ceci est une application web JAX-RS donc je devine que si le serveur d'application ne peut pas correspondre au chemin qu'il retourne sans définir de statut, alors quand le serveur web voit un état de 0, il le remplace par 404 Est-ce que ça sonne bien?

+0

Est-ce que votre Weblogic prend en charge Servlet 3.0? – BalusC

+0

weblogic 10.3.3 – Bill

+0

Je ne connais rien à Weblogic. C'était une question oui-non. Répondez simplement Oui ou Non. La vraie réponse dépend de cela. Maintenant, encore une fois: votre Weblogic prend-il en charge Servlet 3.0? Oui ou non? – BalusC

Répondre

0

Je suis en retard, mais sans doute la réponse est toujours utile:

Dans les HttpServletResponseWrapper ces méthodes doivent être mises en œuvre:

@Override 
    public void setStatus(int status) { 

     super.setStatus(status);  
     this.status = status; 
    } 

    @Override 
    public void sendError(int status) throws IOException { 

     this.status = status; 
     super.sendError(status); 
    } 

    @Override 
    public void sendError(int status, String msg) throws IOException { 

     this.status = status; 
     super.sendError(status, msg); 
    } 

    @Override 
    public void sendRedirect(String location) throws IOException { 

     this.status = 302; 
     super.sendRedirect(location); 
    } 

En cas de 404, le setStatus n'est pas appelé mais sendError, vous avez besoin pour attraper le statut là-bas.

Questions connexes