2010-11-16 6 views
6

Je souhaite définir un ensemble de messages d'erreur afin que, lorsque les erreurs de validation génèrent des codes, ces codes détectent le message d'erreur correspondant et les impriment. Par souci d'apprentissage, et pour développer une application web extensible, je voudrais suivre le bon chemin d'i18n, bien que je n'aie besoin de définir un ensemble de messages (anglais) maintenant. Par conséquent, les locales doivent toutes par défaut être en anglais lorsqu'elles ne trouvent pas leurs propres ressources (que je n'ai pas encore définies).Comment définir et obtenir des messages régionaux dans Spring MVC?

Je n'ai jamais utilisé aucune des fonctionnalités i18n de Java. Et les docteurs du printemps supposent que j'ai cette connaissance.

Quelqu'un pourrait-il me donner un coup de pouce dans la bonne direction? J'ai défini messageSource dans mon contexte webapp dispatcher-servlet.xml. J'ai un validateur qui produit un objet BindingResult avec un champ refusé "username", avec le code "username.taken". Je peux générer le message par défaut.

Maintenant, j'ai juste besoin d'obtenir le message d'erreur du fichier errormessages.properties à mon avis.

Comment résoudre un code d'erreur dans un message?

<bean id="messageSource" 
     class="org.springframework.context.support.ResourceBundleMessageSource"> 
    <property name="basenames"> 
    <list> 
     <value>errormessages</value> 
    </list> 
    </property> 
</bean> 

Répondre

9

Cela dépend de ce que vous voulez faire avec ce texte. La première possibilité est d'obtenir le message programme:

@Autowired 
private MessageSource messageSource; 

@RenderMapping(params = "render=details") 
public String showDetails (Model model, Locale locale) { 
    messageSource.getMessage(<your key goes here>, null, locale); 
} 

De cette façon est très rare, parce que vous devez obtenir les clés de message former les erreurs objet par vous-même.

Un autre moyen plus courant consiste à utiliser les extensions intégrées dans la vue livrées avec spring mvc. Vous ne l'avez pas écrit mais je suppose que vous utilisez des JSP. Dans ce cas, vous pouvez simplement écrire quelque chose comme ceci dans votre JSP:

<!-- showing errors --> 
<div> 
    <form:errors path="*" /> 
</div> 

<!-- showing arbitrary messages --> 
<div> 
    <spring:message code="${success.messageKey}"/> 
</div> 

Pour lire plus loin, je vous suggère de http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html

+0

Grande réponse, merci beaucoup pour ça !! Je me préoccupe plus urgent va de l'erreur de champ, qui produit quelque chose comme 4 codes d'erreur, et donc choisir entre lequel des 4 codes d'erreur (ou le message par défaut) devrait être choisi et présenté dans la page résultante. Mais j'ai posté une autre question plus spécifique à ce point: http://stackoverflow.com/questions/4202437/spring-how-to-resolve-a-validation-error-error-code-error-message Merci pour cette réponse, ça a été très utile aussi! –

Questions connexes