Überprüfen Sie, ob ein Ergebnis ein ok playframework ist

7

Ich versuche eine etwas bessere @Cached Annotation zu machen, indem ich auf die Parameter der Funktion aufmerksam mache, die ich in meinen Controllern anrufe.

Ich habe diese Aktion:

%Vor%

Meine Frage ist: Ich möchte das Ergebnis von delegate.call () nur zwischenspeichern, wenn es ein Ok () ist. Wie kann ich das überprüfen? Gibt es eine Eigenschaft? ein util? oder muss ich Ok (). getClass (). isInstance (Ergebnis)?

Danke für die Antworten und Hinweise.

PS: Warum will ich das machen? Weil ich einige Anrufe habe, die wenige Arten von verschiedenen Ergebnissen erzeugen. Wenige Ergebnisse, die sie zwischenspeichern könnten eine Option sein, da ich nicht möchte

    
ɭɘ ɖɵʊɒɼɖ 江戸 27.02.2013, 16:49
quelle

4 Antworten

6

Ein ok -Ergebnis ist tatsächlich ein play.mvc.Results.Status , das sein Scala-Gegenstück play.api.mvc.Results.Status umschließt, das wiederum seinen status -Code auf 200 gesetzt hat.

Also rufst du result.getWrappedResult() auf und prüfst, ob der Typ stimmt, wirf ihn auf PlainResult (den kleinsten gemeinsamen Nenner) und rufe status auf.

Das sieht aber sehr hässlich aus:

%Vor%     
Marius Soutier 27.02.2013, 18:07
quelle
8

Weniger sucky Ansatz:

%Vor%

Funktioniert ab 2.2.2.

    
user2029783 22.04.2014 02:38
quelle
3

Nur um diese Seite mit der neuesten Version von 2.3+ Playframework zu aktualisieren.

%Vor%

einfach genug.

    
quelle
2

Wenn Sie wissen, dass Ihre Result eine Instanz von play.mvc.Results.Status ist (was das ist, wenn Sie sie mit einer der statischen Hilfsmethoden aus der Klasse play.mvc.Results erstellt haben), können Sie sie in Status umsetzen und holen ein SimpleResult -Objekt, das direkt getWrappedSimpleResult() verwendet:

%Vor%     
Zoltán 02.02.2014 21:53
quelle