managedbean

Mattepuffo's logo
Internazionalizzazione in JSF

Internazionalizzazione in JSF

Oggi vediamo un semplice meccanismo per integrare la internazionalizzazione nelle nostre applicazioni Java Server Faces.

Prima di tutto consideriamo che useremo dei file di properties, formati dalla combinata chiava=valore.

Secondo poi, ogni file di lingua dovrà essere nominato in questo modo: <nome>_<lingua>.properties.

A parte quello di default al quale dovete levare la parte riguardante la lingua.

Quindi nella nostra applicazione creiamo un package (ad esempio com.mf.language) e dentro ci creiamo due file:

  • messages.properties
  • messages_en.properties

Il primo è per l'italiano, lingua di default.

Mattepuffo's logo
Svuotare un form in JSF

Svuotare un form in JSF

Ultimamente mi sono dato allo studio del framework JSF (Java Server Faces).

Un arogmento molto richiesto è come svuotare un form dopo che è stato inviato (e magari anche validato) senza usare redirect o Javascript.

Perchè il fatto è che il comportamento di default prevede che il form non si svuoti se si rimane nella stessa pagina.

Vediamo quindi come fare; prima di tutto abbiamo un form del genere:

      <h:form id="frm_add_lavoro">
            <h:inputText value="#{lb.titolo}" id="titolo">
            </h:inputText><br/>
            <h:inputTextarea value="#{lb.testo}" id="testo">
            </h:inputTextarea>
            <h:commandButton action="#{lb.addLavoro()}" value="Aggiungi lavoro" />
        </h:form>

La cosa importante è specificare un id al form e un id per ogni componente che ci interessa, in modo da poterli richiamare nel nostro ManagedBean.       

Mattepuffo's logo
Internazionalizzazione con Java Server Faces

Internazionalizzazione con Java Server Faces

In questi giorni mi sto dando allo studio delle Java Server Faces (JSF) e mi sono subito imbattuto in un problema: l'internazionalizzazione.

Volendo evitare modalità "classiche" tipo cookie o salvare i testi direttamente dentro un classe, possiamo procedere in questo modo.

Nel mio package ho creato un sotto package con dentro i file di properties: com.mf.language.

I file di properties devono avere questa nomenclatura: nome_lingua.properties, tranne quello di default.

Io ne ho due:

  • messages.properties (italiano)
  • messages_en.properties (inglese)

I file di properties lavorano con il concetto di chiave:valore:

ciao=CIAO!

Poi dovete scrivere l'equivalente per la altre lingue nei file appositi.

A questo punto creiamo, se non esiste già, il file di configurazione faces-config.xml dentro a WEB-INF, con questo dentro:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
    <application>
        <locale-config>
            <default-locale>it</default-locale>
            <supported-locale>en</supported-locale>
        </locale-config>
        <resource-bundle>
            <base-name>com_mf.language.messages</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>
</faces-config>

In pratica gli diciamo dove sono i file delle lingue, e ne impostiamo una di default.