Para los que han pasado la odisea de la codificación con un aplicativo en struts 2, de tanto leer en diversos foros llegue a la configuración que me hizo posible mostrar los caracteres especiales en diferentes casos de usos,
1 Configuración del cliente
1. En la primera línea de cada JSP se debe indicar el encoding de la página a utilizar de manera que cuando se envía la petición por HTTP entre el cliente y el servidor, el navegador sepa en qué formato debe enviar los caracteres para que el servidor los procese correctamente.
Código PHP:
<%@ page language="java" contentType="text/html; charset=UTF-8" ageEncoding="UTF-8"%>
2 Configuración del Tomcat
2. En la parte del servidor también tenemos que especificar el encoding a utilizar. En Tomcat por defecto se especifica el formato de codificación ISO-8859-1. Para cambiar la codificación tenemos que modificar el archivo server.xml que se encuentra en DIRECTORIO_INSTALACION_TOMCAT\conf\server.xml.
Añadimos el atributo URIEncoding=“UTF-8” en la etiqueta <Connector port=”8080” … /> ya que es aquí donde se configura el comportamiento que sigue Tomcat cuando recibe peticiones a través del puerto 8080.
Código PHP:
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
3. Podría ser necesario especificar al contenedor de servlets Catalina la codificación a utilizar indicándole en el arranque que los caracteres siempre van en UTF-8. Para ello editamos el fichero catalina.bat (Windows) o el catalina.sh (Linux) y añadimos lo siguiente:
Código PHP:
(Windows) set CATALINA_OPTS=-Dfile.encoding="UTF-8"
(Linux) export CATALINA_OPTS=-Dfile.encoding="UTF-8"
A la vez indicamos las opciones del arranque de la JVM en UTF-8 por lo que añadimos al mismo fichero.
Código PHP:
(Windows) set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8"
(Linux) export JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8"
4.Configurar bien el manejador de base de datos para la cofdificación en micaso uso postgresql y laq crear la BD le especifica el ENCODING = 'UTF8' y como uso hibernate en el conector también habia que agregar
Código PHP:
<property name="hibernate.connection.charSet">UTF-8</property>
en el hibernate.cfg.xml.
Todo bien pero hubo casos en el que al usar Struts2 con los formularios para guardar data en la bd ser perdian los caracteres especiales de las cadenas que se guardan en el valuestack por lo que tuve que definir en la cabecera del jsp lo siguiente:
Código PHP:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
y eso me ayudo enormemente!!!!!
a la ves que al recuperar datos en una consulta a la base de datos y querer desplegarlos en una vista con
Código PHP:
<s:property value="funcion.nombre"/>
o al guardar un dato en la sesión del valuestack,
Código PHP:
<s:property value="%{#session.usuario.nombre}"></s:property>
o al enviar valore por get al recuperarlos en la otra vista con
Código PHP:
<s:property value="%{#parameters.nombre" />
no me trae nunca los acentos por lo que después de leer muchos foros conseguí una solución extraña pero eficaz, solo hay que agregar esto al archivo struts. Properties:
Código PHP:
struts.i18n.encoding=ISO-8859-1
Nota: se que las soluciones son muy chapuceras pero recien estoy iniciando en este mundo, hace dos mese que me gradué y en el trabajo me pusieron a hacer un UDDI, web service, y estoy aprendiendo a implementar un bus de servicios con service mix, son muchas tecnologías en tampoco tiempo, y pensar que en la uni solo me daban java hasta aplicativos de escritorios.
Ojala llegue un experto a este post y nos enseñe las practicas correctas en este tema.
estas son las paginas que me ayudaron a resolver entre muchas otras:
[URL="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=tomcatUTF8"]http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=tomcatUTF8[/URL]
[URL="http://grupos.emagister.com/mensaje/estimados_desarrolladores_estuve_tratando_de/7273-2936104"]http://grupos.emagister.com/mensaje/estimados_desarrolladores_estuve_tratando_de/7273-2936104[/URL]