2017-01-21 7 views
0

Ich versuche, einen benutzerdefinierten Exception Mapper für CompletionException zu schreiben und ein Bild im Falle dieser Ausnahme anzuzeigen. Das ist mein Mapper:Bild im Jersey anzeigen ExceptionMapper

@Provider 
public class CustomCompleteExceptionManager implements ExceptionMapper<CompletionException> { 

    @Override 
    public Response toResponse(CompletionException e) { 
     return Response 
       .status(Response.Status.BAD_REQUEST) 
       .entity(Paths.get("error.png").toFile()) 
       .type("image/img") 
       .build(); 
    } 

Methode toResponse aufgerufen wird, wenn mein Code wirft CompletionException, aber Browser nicht angezeigt error.png. Ich erhalte eine Fehlermeldung:

This site can’t be reached 

The webpage at http://localhost:8080/cf/point might be temporarily down or it may have moved permanently to a new web address. 

Wenn ich es funktioniert einfach String Nachricht fein Response schreiben:

@Provider 
public class CustomCompleteExceptionManager implements ExceptionMapper<CompletionException> { 

    @Override 
    public Response toResponse(CompletionException e) { 
     return Response 
       .status(Response.Status.BAD_REQUEST) 
       .entity(e.getMessage()) 
       .build(); 
    } 

Was könnte das Problem sein?

Antwort

1

Der als Antwort eingestellte Medientyp ist falsch.
Es sollte .type("image/png") nicht image/img sein.

Dies ist der Code, wenn ich in meinem lokalen getestet.

return Response 
      .status(Response.Status.BAD_REQUEST) 
      .entity(Paths.get("/home","kishore","Pictures","Meme.png").toFile()) 
      .type("image/png") 
      .build(); 
Verwandte Themen