Come faccio a definire e ottenere localizzazione basato su messaggi in Spring MVC?

Voglio definire una serie di messaggi di errore in modo che quando errori di convalida generare i codici, i codici di raccogliere il messaggio di errore corrispondente e di stampa.

Per il gusto di imparare e di sviluppare un allungabile web app, mi piacerebbe seguire il corretto i18n percorso, anche se ho solo bisogno di definire uno (in inglese) insieme di messaggi ora.

Così i locali dovrebbero essere tutti di default in inglese quando non trovano le loro risorse (che sono ancora da definire).

Non ho mai usato uno qualsiasi dei i18n funzionalità di Java. E la primavera docs pensare che ho questa conoscenza.

Qualcuno potrebbe dammi solo un gental spinta nella giusta direzione?

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

Ora ho solo bisogno di ottenere il messaggio di errore dal errormessages.properties file in mio punto di vista.

Come faccio a risolvere un codice di errore a un messaggio?

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

OriginaleL’autore David Parks | 2010-11-16

One Reply
  1. 9

    Dipende da cosa si vuole fare con questo testo. La prima possibilità è quella di ottenere il messaggio a livello 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é devi avere le chiavi dei messaggi forma l’oggetto di errore da te.

    Altro modo più comune è quello di utilizzare la costruzione di visualizzare le estensioni fornite con spring mvc. Non hai scritto, ma credo che l’utilizzo di Jsp. In questo caso si può semplicemente scrivere qualcosa di simile a questo nella pagina JSP:

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

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

    Grande risposta, grazie mille!!Credo che la mia maggiore preoccupazione è andare da campo di errore, che produce qualcosa come 4 codici di errore e, quindi, a scegliere tra quale dei 4 codici di errore (o il messaggio di default) dovrebbe essere scelto e presentato nella pagina risultante. Ma ho postato un’altra questione più specifica, in una certa misura: stackoverflow.com/questions/4202437/… Grazie per la risposta, è stato molto utile anche!

    OriginaleL’autore scheffield

Lascia un commento