Erstellen Sie für Bean Validation-Nachrichten (im Folgenden "BV") (Standardnachrichten von Anbietern wie Hibernate Validator (im Folgenden "HV")) "ValidationMessages.properties" (Datei für jede Sprache, da es sich um ein Ressourcenpaket handelt) direkt unter dem Klassenpfad. Sie können es ändern, indem Sie dies tun.
Nachrichtendefinition in der HV-JAR-Datei
javax.validation.constraints.Size.message = size must be between {min} and {max}
org.hibernate.validator.constraints.Length.message = length must be between {min} and {max}
Wenn Sie diese Nachricht ändern möchten ...
src/main/resources/ValidationMessages.properties
javax.validation.constraints.Size.message = 'Size' must be between {min} and {max}.
org.hibernate.validator.constraints.Length.message = 'Length' must be between {min} and {max}.
Sie können es in eine beliebige Nachricht ändern.
Wenn es dann mehrere "ValidationMessages.properties" gibt ... Was genau ist das? In dem Fall, in den ich verwickelt war, wurde eine Situation erstellt, in der "ValidationMessages.properties" in den folgenden zwei Mustern vorhanden war.
Soweit ich die BV-Spezifikation überflogen habe, wurden mehrere Dateien nicht erwähnt, so dass der Standard anscheinend nicht mehrere Dateien unterstützt. (Da Englisch schwach ist, kann es gelesen werden ...)
Ich habe die kleinen Bewegungen nicht unterdrückt, aber ... Wenn Sie HV als Anbieter verwenden, ist eine der Dateien gültig. Wahrscheinlich wird die Datei mit der höheren Priorität des Klassenpfads verwendet, aber wenn die Priorität nicht explizit angegeben werden kann, wie die JAR-Datei in der Bibliothek der Webanwendung (War), die Implementierung des Anwendungsservers usw. Es wird auch erwartet, dass sich die von aktivierten Dateien ändern. ↓ Infolgedessen verschwindet die erwartete Nachricht, wenn die angegebene Nachricht für die Datei angenommen wird, die nicht gültig wurde (→ das heißt, es wird ein Fehler).
Wenn Sie sich besonders mit der Einhaltung der BV-Spezifikation befassen, löschen Sie "ValidationMessages.properties" in der Bibliothek oder im Submodul und steuern Sie, dass "ValidationMessages.properties" beim Ausführen der Anwendung im Klassenpfad angezeigt wird.
Wenn Sie sich nicht speziell mit der Einhaltung der BV-Spezifikationen befassen und davon ausgehen, dass Sie diese für + HV verwenden werden, Mechanismus der Lesefunktion für die ursprüngliche Nachrichtendefinition von HV Sie können en-US / html_single /? V = 6.0 verwenden (# _constraint_definitions_via_code_serviceloader_code). Insbesondere ... Bitte ändern Sie "ContributorValidationMessages.properties" anstelle von "ValidationMessages.properties" direkt unter der Jar-Datei der Bibliothek oder des Submoduls. Auf diese Weise kann die HV alle im Klassenpfad vorhandenen "ContributorValidationMessages.properties" lesen und die Nachricht erstellen.
Wenn Sie die Prioritätsreihenfolge der Nachrichtendefinitionen (in absteigender Reihenfolge der Priorität) bei Verwendung von HV organisieren ...
ValidationMessages.properties
direkt unter dem Klassenpfad (nur eine Datei ist gültig, wenn mehrere vorhanden sind)ContributorValidationMessages.properties
direkt unter dem Klassenpfad (alle Dateien sind gültig)org / hibernate / validator / ValidationMessages.properteis
im Klassenpfad (von HV bereitgestellte Standardnachrichtendefinitionsdatei)Es wird sein.
Wenn die Bibliothek für die Verwendung in HV vorgesehen ist, ist es besser, die Standardnachricht in "ContributorValidationMessages.properties" zu definieren und zu verteilen. Selbst wenn Sie es bei einem anderen Anbieter als HV verwenden, sollte es nicht schlecht sein ...
Recommended Posts