2011-01-27 9 views
5

Estoy tratando de localizar imágenes en JSF, y quiero que el usuario pueda establecer su configuración regional en mi sitio. Esto que estoy haciendo por una llamada aImagen i18n en JSF2

FacesContext.getCurrentInstance().getViewRoot().setLocale(_locale); 

la que funciona muy bien, con una excepción:

<h:graphicImage library="images" name="pic.gif" /> 

utiliza el Accept-Language enviado en la solicitud del navegador para determinar qué localización para su empleo. Puedo evitar esto colocando una cadena local de cada archivo .properties y hacer referencia a las imágenes por

<h:graphicImage library="#{resource.locale}/images" name="pic.gif" /> 

pero entonces no hay retroceso para las imágenes individuales, por lo que tiene que tener una copia de cada imagen, ya sea es diferente o no, en el directorio de cada localidad. Esto es bastante engorroso, dado que soporto 9 configuraciones regionales y probablemente más en el futuro. Cualquier consejo sería muy apreciado.

+0

Actualmente estoy buscando "decorar" ViewHandler para anular el método [public Locale calculateLocale (FacesContext context)] usando la clase ViewHandlerWrapper. Parece una solución muy prometedora, se actualizará cuando lo haya hecho – theFunkyEngineer

+0

Alterar ViewHandler funcionó para obtener la configuración regional del lugar correcto; sin embargo, la recuperación de imágenes sigue siendo un problema: utilizará una biblioteca diferente para imágenes no localizadas. Publicará la configuración completa cuando finalice la implementación. – theFunkyEngineer

+0

Vea mi comentario a BalusC a continuación. – rapt

Respuesta

2

Tema interesante. Sin embargo, no hay soporte integrado para esto, ni por JSF ni por el remanente de Java EE. Su mejor opción es crear un Servlet que conoce acerca de la configuración regional de reserva y por lo tanto hace, básicamente, la siguiente prueba:

if (getServletContext().getResource(request.getPathInfo()) == null) { 
    // Display fallback image instead. 
} 

eventualmente podría hacer esto por un componente JSF personalizado que hace lo mismo cheque.

+0

BalusC es de hecho el JSF Grand Master, pero en realidad hay un muy buen soporte integrado para esto en JSF 2. Lea la serie de 3 partes: http://technology-for-human.blogspot.com/2010/10 /jsf-20-new-featuers-part-1-of-3.html http://technology-for-human.blogspot.com/2010/10/jsf-20-new-features-part-2-of- 3.html http://technology-for-human.blogspot.com/2010/10/jsf-20-new-features-part-3-of-3.html .... especialmente el artículo número 2. – rapt

+0

@rapt : Vuelve a leer la pregunta OP ya lo sabe. Simplemente no es lo suficientemente adecuado para los requisitos particulares de OP. – BalusC

+0

No creo que OP sea consciente de esto. Está tratando de prefijar la ruta de la imagen con una cadena que corresponderá a la carpeta de imágenes localizadas. Sin embargo, en el artículo lo hacen sin prefijo. El marco lo hace de forma automática. También proporciona devolución automática a un idioma predeterminado. – rapt