2017-02-10 1 views
0

Ich benutze Hibernate Validator Version 5.3.0.Wie Max-Wert in @Size Annotation aus Eigenschaftendatei festlegen?

Folgendes ist die Klasse, die ich validieren möchte.

public class DocumentRequest { 

    @NotEmpty(message="{invalid.docId}") 
    private String docId; 

    @NotEmpty(message="{invalid.title}") 
    @Size(max=200, message="{invalid.title}") 
    private String title; 
} 

Das Problem hier ist der max Wert von @Size ist eine "Magie" Nummer (Zitiert Sonar). Wie kann ich es aus der Eigenschaftendatei festlegen?

Ich habe versucht, es wie folgt hinzuzufügen:

public class DocumentRequest { 

    @NotEmpty(message="{invalid.docId}") 
    private String docId; 

    @NotEmpty(message="{invalid.title}") 
    @Size(max="{max.default.value}", message="{invalid.title}") 
    private String title; 
} 

I max.default.value in validation.properties Datei hinzugefügt, aber die max int sein kann, und ich bin vorbei String zu. So als Ergebnis:

Type mismatch: cannot convert from String to int

Gibt es eine Möglichkeit, dies zu erreichen?

Antwort

0

Nur weil Sonar über etwas winselt, bedeutet das nicht, dass Ihr Code schlecht ist.

Sonar wird schon glücklich sein, wenn Sie diesen "magischen" Wert in eine private static final an der Spitze Ihrer Klasse setzen. Keine Notwendigkeit, es zu einer Eigenschaft zu machen (ich bezweifle, dass dein System gut reagieren würde, wenn jemand später dies ändern würde).

+0

Einverstanden, dass Sonar Konstanten in Anmerkungen als ein Problem kennzeichnet, scheint nur fehlgeleitete. Nichtsdestoweniger haben wir eine API für die Deklination dynamischer Constraints im Hibernate Validator, die Sie * benutzen können, aber es ist wirklich nicht das, was in diesem Fall getan werden sollte. – Gunnar

Verwandte Themen