2016-08-03 11 views
0

Mit Java-Validierung Einschränkungen hinzufügen, das heißtWie weitere Informationen über Java-Einschränkungen

@NotNull, @Size, etc 

Sie können ein Nachrichtenfeld hinzufügen, die Ihre api an den Client zurückgeben kann. Gibt es trotzdem zusätzliche Felder wie einen benutzerdefinierten Code?

Das Problem, das ich habe, ist, dass jeder mögliche Fehler seine eigene Nachricht und Code-Rückgabe an den Client benötigt. (Mit Code meine ich einen benutzerdefinierten im Antworttext, keinen HTTP-Statuscode).

I.e.

{ 
    message: foo can not be null, 
    code: 10001 
} 

Das einzige, was ich denken kann, ist individuelle Prüfklassen auf jedem einzelnen Feld zu verwenden, die ziemlich viel Arbeit sein würde, oder einen Riesen haben if/else-Block, der den Code auf der Nachricht basiert setzt.

Kann jemand an eine bessere Lösung denken?

Vielen Dank im Voraus für jede Hilfe :)

+0

Wie über Ihre Nachricht Formatierung als „10001 | foo nicht sein kann null ", und teilen Sie dann jede Nachricht, die Sie erhalten, und analysieren Sie den Code vom ersten Teil und die Nachricht vom zweiten Teil? – RealSkeptic

+0

Das ist die Lösung, mit der ich momentan arbeite. Es ist immer noch nicht sehr nett. Ein anderes Problem ist, dass meine Fehlermeldungen in einer ValidationMessages.properties-Datei sind und als message = "{Missing.foo}" eingefügt werden. Um den Code in die Nachricht aufzunehmen, müssen sich die Codes auch in der Datei ValidationMessages.properties befinden. Auch das ist keine sehr schöne Lösung. – wybourn

Antwort

1

können Sie die von allen Constraint-Typen definiert payload() Parameter verwenden.

Sie müssten einen Klassentyp für jedes Ihrer Fehlercodes erklären:

public interface Error_01 {} 

Und dann:

public class SomeValidatedClass { 
    @NotNull(payload=Error_01.class) 
    private String someField; 
} 
+0

Danke, das sieht vielleicht besser aus. – wybourn

Verwandte Themen