2010-11-16 14 views
6

Desidero definire una serie di messaggi di errore in modo che quando gli errori di convalida di generano codici, tali codici prelevano il corrispondente messaggio di errore e li stampano.Come si definiscono e si ottengono i messaggi basati sulla localizzazione in Spring MVC?

Per motivi di apprendimento e per sviluppare un'app web estensibile, mi piacerebbe seguire il percorso i18n corretto, anche se ora ho solo bisogno di definire un gruppo di messaggi (in inglese).

Quindi le impostazioni internazionali dovrebbero essere tutte predefinite in inglese quando non trovano le proprie risorse (che devo ancora definire).

Non ho mai usato nessuna delle funzionalità i18n di Java. E i documenti di primavera presumono che io abbia questa conoscenza.

Qualcuno potrebbe darmi una gente nella giusta direzione?

Ho definito un messageSource nel mio contesto webapp dispatcher-servlet.xml. Ho un validatore che produce un oggetto BindingResult con un campo respinto "username", con il codice "username.taken". Posso generare il messaggio predefinito.

Ora ho solo bisogno di ottenere il messaggio di errore dal file errormessages.properties nella mia vista.

Come si risolve un codice di errore in un messaggio?

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

risposta

9

Dipende da cosa si desidera fare con questo testo. La prima possibilità è quella di ottenere il messaggio di programmazione:

@Autowired 
private MessageSource messageSource; 

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

In questo modo è molto raro, perché è necessario ottenere le chiavi dei messaggi formare le Errori oggetto da soli.

Un altro modo più comune è quello di utilizzare la configurazione in vista estensioni fornite con MVC primavera. Non l'hai scritto ma immagino che tu stia usando JSP. In questo caso si può semplicemente scrivere qualcosa di simile nel tuo JSP:

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

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

Per ulteriori approfondimenti vi consiglio http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html

+0

Grande risposta, grazie mille per questo !! Credo che la mia più pressante preoccupazione sta andando da l'errore di campo, che produce qualcosa come 4 codici di errore, e quindi scegliere tra quale dei 4 codici di errore (o il messaggio predefinito) dovrebbe essere scelto e presentato nella pagina risultante. Ma ho postato un'altra domanda più specifica in tal senso: http://stackoverflow.com/questions/4202437/spring-how-to-resolve-a-validation-error-error-code-error-message Grazie per questa risposta, è stato anche molto utile! –

Problemi correlati