Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Applicazione multilingua in Struts

Può essere necessario creare un applicazione in più lingue, in questo caso, il framework Struts ci mette a disposizione due componenti i18n
Può essere necessario creare un applicazione in più lingue, in questo caso, il framework Struts ci mette a disposizione due componenti i18n
Link copiato negli appunti

I componenti i18n sono packaged con lo Struts Framework, il primo di questi componenti, che viene gestito dall'application Controller, è una classe Message che referenzia un resource boundle contenente stringhe locale-dependent; il secondo è un custom tag JSP, <bean:message />, che viene utilizzato nel View layer per presentare le stringhe gestite dal Controller.

Il Controller

Il metodo standard quando si internazionalizza un'applicazione Struts inizia con la creazione di un semplice set di file di proprietà.

Definizione dei Boundles di Risorsa

Il resource boundle è un file che contiene le coppie chiave/valore per il linguaggio dell'applicazione. Il formato del nome per questo file è ResourceBundleName_language_COUNTRY.properties (es. ApplicationResources_en_US.properties - tutte le risorse richieste da un client negli Stati Uniti che parla la lingua Inglese utilizzeranno questo file per effettuare un retrieve specifico).

Quando si sviluppa un'applicazione i18n, è necessario definire un file di proprietà per ciascun linguaggio che l'applicazione utilizzerà.

Deployment dei Boundles di risorsa

Una volta definiti tutti i file di proprietà dell'applicazione è necessario informare Struts. Il tutto utilizzando il tag <init-parameter> di ActionServlet:

Listato 1. Deploy dell'applicazione (Guarda il codice completo)

..//
  <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  <init-param>
    <param-name>application</param-name>
    <param-value>ApplicationResources</param-value>
  </init-param>
..//

Tutto quello che dobbiamo fare è copiare tutti i file di risorse nella directory classes e riavviare Tomcat.

La vista

Per utilizzare il resource boundles è necessario utilizzare il secondo componente i18n, cioè un custom tag JSP definito dal Framework Struts, <bean:message />, che viene utilizzato per presentare le stringhe attuali che sono state caricate dal Controller.

Deploying della Tag Library bean

Mettiamo mano al file web.xml che necessita dell'aggiunta di un <taglib>:

<taglib>
  <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
  <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>

Internazionalizzazione di un'applicazione

I diversi passi per effettuare l'internalizzazione di una applicazione sono:

  • Creazione del resource boundles che conterrà una coppia chiave/valore utilizzata nell'applicazione.

    ApplicationResources_it_IT.properties
    app.symbol=Simbolo
    app.price=Prezzo Corrente

    ApplicationResources_en_US.properties
    app.symbol=Symbol
    app.price=current Price

  • Copia di questi file nella cartella classes dell'applicazione
  • Aggiunta del sotto-elemento <init-param> di ActionServlet, chiamato ApplicationResources.

      <init-param>
        <param-name>application</param-name>
        <param-value>ApplicationResources</param-value>
      </init-param>

  • Aggiunta di un <taglib> descrivente la bean tag library nel file web.xml

    <taglib>
      <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
      <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>

  • Produrre la pagina JSP

    <%@ page language="java" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

    <html>
    <head>
      <title><bean:message key="app.title" /></title>
    </head>
    <body>
    <html:form action="Lookup">
    <table width="45%" border="0">
    <tr>
    <td><bean:message key="app.symbol" /></td>
    <td><html:text property="symbol" /></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><html:submit /></td>
    </tr>
    </table>
    </html:form>
    </body>
    </html>

    Le modifiche al file struts-config.xml sono le seguenti:

    <action
      path="/Lookup"
      type="esempio.LookupAction"
      name="lookupForm" >
        <forward name="success" path="/internazionalizedQuote.jsp" />
    </action>

Ti consigliamo anche