2016-10-04 1 views
2

J'ai ajouté une validation (@javax.validation.Valid) à mon @RestController et dans la classe @RequestBody j'ai utilisé @NotEmpty annotation:messages personnalisés pour SpringBoot RESTful validation de haricots ne fonctionne pas

public class Invoice { 

    @NotEmpty 
    private String commentText; 

    // omitted 
} 

Lorsqu'un appel REST avec manquant commentText est invoqué le bon erreur est renvoyée au client:

{ 
    "timestamp": 1475599494823, 
    "status": 400, 
    "error": "Bad Request", 
    "exception": "org.springframework.web.bind.MethodArgumentNotValidException", 
    "errors": [ { 
     "codes":  [ 
     "NotEmpty.invoice.commentText", 
     "NotEmpty.commentText", 
     "NotEmpty.java.lang.String", 
     "NotEmpty" 
     ], 
     "arguments": [  { 
     "codes":   [ 
      "invoice.commentText", 
      "commentText" 
     ], 
     "defaultMessage": "commentText", 
     "code": "commentText" 
     }], 
     "defaultMessage": "may not be empty", 
     "objectName": "invoice", 
     "field": "commentText", 
     "bindingFailure": false, 
     "code": "NotEmpty" 
    }], 
    "message": "Validation failed for object='invoice'. Error count: 1", 
    "path": "/api/invoices/1" 
} 

J'ai créé src/main/resources/messages.properties avec le contenu suivant:

NotEmpty.invoice.commentText=Please type a comment 

Le problème est qu'au lieu de la coutume « S'il vous plaît saisir un commentaire » le message d'erreur original est retourné au client. J'utilise SpringBoot 1.4 avec la configuration YAML et l'exécution de l'application dans Eclipse.

Une idée où le problème pourrait être?

+0

des mises à jour sur ce problème? – user2049132

Répondre

0

Au lieu de @NotEmpty annotation essayer d'utiliser alternative de javax.validation package: @NotNull et @Size(min=1). Aussi vous pouvez trouver cet exemple de projet utile: https://github.com/MichaelKnight/ValidandoFormularios

Si pour une raison quelconque, vous devez utiliser @NotEmpty annotations, vous devez créer un ValidationMessages.properties de fichier et placez-le dans votre classpath.

Pour éviter les problèmes de traduction de clé, vous pouvez indiquer une clé de message comme suit: @NotEmpty(message="{NotEmpty.invoice.commentText}"). Ou jetez un oeil ici: http://docs.jboss.org/hibernate/validator/4.3/reference/en-US/html/validator-usingvalidator.html#section-message-interpolation

+0

J'ai essayé '@ javax.validation.constraints.NotNull' avec' NotNull.unidentifiedInvoice.commentText = Veuillez entrer un commentaire' dans 'messages.properties' mais il retourne toujours la valeur par défaut' "defaultMessage": "ne peut pas être nul" ' –

+0

Avez-vous changé le nom de la classe en UnidentifiedInvoice? Si ce n'est pas le cas, essayez d'utiliser cette clé: 'NotNull.invoice.commentText'. – eparvan

+0

Désolé, oui, je l'ai fait ... ce n'est cependant pas la cause du problème. –