JavaServer Faces

Message Bundles
Przeniesienie komunikatów ze stron JSF do osobnych plików
JSF wspiera dobrą praktykę przy pisaniu warstwy prezentacji, polegającą na przeniesieniu wszystkich komunikatów, dotychczas umieszczanych np. w treści stron JSP, do osobnego pliku. Komunikaty tekstowe zapisywane są w plikach properties na zasadzie klucz-wartość (np. messages.properties). Aby skorzystać z pliku z komunikatami, należy zadeklarować użycie takiego pliku za pomocą odpowiedniego taga jsf/core:

<f:loadBundle basename="jsfapp.messages" var="msgs" />

A następnie można już z takiego zasobu korzystać bezpośrednio:
<h:outputText value="#{msgs.logged}" />

Różne wersje językowe aplikacji
Zasadniczą korzyścią płynącą z utrzymywania komunikatów na zewnątrz stron JSF jest możliwość utworzenia wariantu pliku properties z inna wersją językową komunikatów (np. messages.properties, messages_pl.properties). Wybór wersji językowej zależy od ustawionego locale. Można to ustawić w kodzie aplikacji, np:

FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(Locale.ENGLISH);


Można też ustawić locale w atrybucie widoku na stronie JSF:

<f:view locale="en">

Lub w pliku faces-config.xml:

<application>
<locale-config>
<default-locale>pl</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
</application>


Dodanie kolejnych wersji językowych nie wymaga zmian w stronach JSF (poza obsługą samego przełączenia języka).

JavaServer Faces