Ist es möglich, eine Nachricht in eine BadRequestException
aufzunehmen, wenn der Benutzer einen Antwortcode 400 sieht, kann er/sie auch herausfinden warum?Wie Sie eine Nachricht in eine BadRequestException aufnehmen?
würde das Szenario so etwas wie dies, vereinfacht:
public Entity getEntityWithOptions(@PathParam("id") String id, @QueryParam("option") String optValue) {
if (optValue != null) {
// Option is an enum
try {
Option option = Option.valueOf(optValue);
} catch (IllegalArgumentException e) {
throw new BadRequestException(e.getMessage());
}
return new Entity(option);
}
return new Entity();
}
Ich weiß, das stattdessen ein Response
Objekt durchgeführt werden kann zurückkehren, aber ich möchte das nicht.
Ist das möglich? Vielleicht mit einem ExceptionMapper<BadRequestException>
? Oder dies ist nicht möglich, da BadRequestException
bereits eine Jersey-spezifische Ausnahme ist?
Ich denke, die Botschaft in den Konstruktor gesetzt werden kann, nicht wahr? Und wenn ein ExceptionMapper verwendet wird, gibt es tatsächlich eine Antwort zurück. – Cuero
Ich übermittle die Nachricht an den Konstruktor, aber die Antwort enthält es nicht. – dabadaba
Wenn ein exceptionMapper verwendet wird, wird die an den Konstruktor gesendete Nachricht angezeigt. Machen Sie den Mapper einfach so: public Antwort toResponse (BadRequestException e) {return Antwort.status (Response.Status.BAD_REQUEST) .type (MediaType.TEXT_PLAIN) .entity (ExceptionUtils.getStackTrace (e)). Build();} – Cuero