Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Hola Mundo con internacionalización
struts.xml<constant name="struts.custom.i18n.resources" value="global" />
global.properties (en la raíz de la carpeta src)pagina_inicio.holaMundo = Hola mundo\!\!
Si este fichero tiene acentos, caracteres asiáticos, etc, podemos hacer que se vean correctamente utilizando la herramienta que viene entre los binarios (carpeta bin) del jdk:
native2ascii -encoding utf8 C:\source.txt C:\output.txt
HelloWorld.jsp<%@ taglib prefix="s" uri="/struts-tags"%>
<s:text name="pagina_inicio.holaMundo" />
Para poner un textfield con label:
<s:textfield key="login.username" name="username" />
Internacionalización – varios idiomas
-src - global.properties - global_pt.properties - global_es.properties
HelloWorld.jsp<a href="location.action?request_locale=es">En Español</a>
<a href="location.action?request_locale=pt">En Portugués</a></p>
La clase vinculada a location.action no hace nada en particular:
<action name="location">
<result>HelloWorld.jsp</result>
</action>
Basta con el el parámetro enviado sea request_locale para que se produzca correctamente el cambio del idioma.
Si queremos cargar el español, y el español es el idioma por defecto, dejaremos en blanco el fichero global_es.properties, de tal forma que al no encontrar nada, el sistema se irá a leer el fichero de configuración por defecto, que estará en español.
Internacionalización imprimiendo valores dentro de un atributo. Hay dos formas
HelloWorld.jsp
<%@ taglib prefix="s" uri="/struts-tags"%>
<h2>
<s:property value="%{getText('resource.msg')}" />
<s:property value="mensaje" />
</h2>
Cuando queramos usar internacionalización en el atributo de una etiqueta, utilizaremos esta forma de cargar los textos.
global.properties
resource.msg = Seleccione una opción, por favor
HellowWorld.java
public class HelloWorld extends ActionSupport {
private String mensaje;
public String recuperaMensaje(){
setMensaje(getText("resource.msg"));
/*nota:
Es posible recuperar el idioma actual usando:
Locale loc = getLocale(); */
return SUCCESS;
}
public String getMensaje() {
return mensaje;
}
public void setMensaje(String mensaje) {
this.mensaje = mensaje;
}
}
Nota!
Obtener el nombre del action que se está ejecutando:
String action = com.opensymphony.xwork2.ActionContext.getContext().getName();
System.out.println(action);