Zdroje zpráv

Při návrhu téměř každé reálné aplikace je nutno řešit problém její internacionalizace. A protože rámec Spring je zde od toho, aby usnadňoval implementaci často se opakujících funkcí, tak i v této oblasti poskytuje programátorovi pomocnou ruku v podobě zdroje zpráv (objekty s rozhraním org.springframework.context.MessageSource). Jeho úkolem je poskytovat parametrizované zprávy pro dané národní prostředí (Locale).

Definice zdroje zpráv, která musí mít nutně název messageSource, může vypadat takto:

<bean name="messageSource" 
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

  <property name="basename" value="WEB-INF/spring/messages" />
  <property name="cacheSeconds" value="20" />
  <property name="fileEncodings">
    <props>
      <prop key="WEB-INF/spring/messages_cs">UTF-8</prop>
      <prop key="WEB-INF/spring/messages_en">UTF-8</prop>
      <prop key="WEB-INF/spring/messages">UTF-8</prop>
    </props>
  </property>
</bean>

Tento příklad je opět převzat z přiložené vzorové aplikace, konkrétně ze souboru WEB-INF\spring\applicationContext-business.xml. Třídou, kterou používáme, je ReloadableResourceBundleMessageSource, jenž je schopen oproti standardní implementaci org.springframework.context.support.ResourceBundleMessageSource ve stanoveném časovém intervalu pravidelně znovu načítat zprávy z definovaných souborů.

Obě zmíněné implementace interně využívají klasické internacionalizační architektury jazyka Java, tzn. třídy java.util.ResourceBundle ve spolupráci se standardním zpracováním zpráv poskytovaným třídou java.text.MessageFormat. V naší definici jsme pomocí atributu basename specifikovali umístění našich properties souborů se zprávami, nastavili dvacetisekundový interval znovunačítání zpráv a definovali kódování zmíněných properties souborů.

Ke zprávám z definovaného zdroje zpráv pak lze snadno přistupovat ze všech vrstev aplikace. V JSP/JSTL šablonách lze využít standardní JSTL značku fmt:message či značku spring:message z obecné knihovny značek rámce Spring (viz „Knihovny značek JSP“). V kontrolerech (viz „Kontrolery“), které rozšiřují jakoukoliv třídu z hierarchie základních rámcem poskytnutých kontrolerů, lze použít následující volání:

getMessageSourceAccessor().getMessage(...)

Objekt manažerské (servisní, aplikační) vrstvy pak musí pro možnost stejného volání rozšířit třídu org.springframework.context.support.ApplicationObjectSupport.

Komentáře

Téma neobsahuje žádné komentáře.

Vložit komentář

Můžete používat značkovací jazyk Texy!


Jméno:
E-mail:
Url:
Komentář:
1 + 2 =
 
MoroSystems, s.r.o.