2010-12-12 13 views
3

in meiner Anwendung (mit Feder),umgeleitete Anfrage, wenn Ausnahme geworfen

Ich versuche, eine Methode aus Sicht mit Feder expostingBean aufrufen. und wenn ich versuche, eine Methode aus der Sicht aufzurufen, wird ein Fehler ausgegeben. Ich versuche, mit HandlerExceptionResolver zu fangen, aber kein Glück, ich denke, es kann nicht von HandlerExceptionResolver behandelt werden, weil die Ausnahme nicht zum Controller geworfen wurde.

Also versuche ich einen anderen Weg, um die Anfrage umleiten, wenn Ausnahme ausgelöst. und ich denke, Aspekt hat die Möglichkeit, es zu tun. Ist es möglich, umgeleitete Anfrage, wenn Ausnahme von Aspekt geworfen?

Antwort

4

Wie Sie richtig sagen, HandlerExceptionResolver wird nicht aufgerufen, wenn eine Ausnahme aus der Sicht geworfen wird. Diese Resolver sind sehr spezifisch auf Controller-Ausnahmen ausgerichtet.

Ihre besten Optionen hier sind entweder HandlerInterceptor und überschreiben Sie die afterCompletion-Methode, die die Ausnahme enthält, die von der Ansicht ausgelöst wird. Sie können in der Lage sein, von hier aus eine Weiterleitung zu senden, abhängig davon, ob die Antwort bereits von der Ansicht ausgeführt wurde oder nicht.

Ich sehe nicht, wie Aspekte Ihnen hier auch helfen würden. Nicht das Werkzeug für diesen Job.

Allerdings ist mein Rat an Sie, aufzuhören beanspruchte Bean in Ihrer JSP zu verwenden. Ich erkenne, dass es verlockend bequem ist, aber das ist die Art von Ärger, die man bekommt, wenn man es benutzt. Ich rate, dass Ihr Controller alle für die Ansicht erforderlichen Daten zusammenstellt, in das Modell einklebt und an die Ansicht sendet. Auf diese Weise besteht weniger Gefahr, dass die Ansicht eine Ausnahme auslöst, da sie bereits alles enthält, was sie benötigt.

Auch wenn Sie eine Weiterleitung senden müssen, wie Sie, dann müssen Sie dies wirklich tun vor die Ansicht beginnt ausgeführt werden. Andernfalls kann der Ansichtslayer mit dem Schreiben der HTTP-Antwortheader beginnen, bevor die Ausnahme ausgelöst wird. Wenn dies der Fall ist, können Sie stattdessen keine Weiterleitung senden - die Antwort wird "festgeschrieben".

+0

+1 - Ansichten sollten Dinge tun, die wahrscheinlich Ausnahmen auslösen. –

+0

@Stephen: Ich glaube, du hast irgendwo ein "nicht" drin verpasst :) – skaffman

+0

ja ich stimme dir zu, ich stelle fest, dass exposed bean im frühjahrsbereich ist. und seine Gefahr. aber ich habe immer noch keine Idee, wie man Daten an das Modell bindet und es wird in mehreren Ansichten verwendet. irgendein Vorschlag? Übrigens, danke für deine Antwort. –

Verwandte Themen