2012-01-20 10 views
6

Por lo tanto, mi plantilla incluye un footer.xhtml¿Cómo incluir condicionalmente un archivo en mi plantilla usando JSF y Facelets?

<ui:include src="/WEB-INF/testtaker/Footer.xhtml"/> 

Lo que quiero hacer es cambiar el pie de página sobre la base de algunos usuarios pref a pie de página diferente _ ???. Archivo XHTML.

lo tanto, me gustaría hacer algo como esto:

<ui:include src="/WEB-INF/testtaker/Footer_001.xhtml"> 
     Content from original Footer.xhtml 
</ui:include> 

y si no existe Footer_001.xhtml, entonces que utilizar el contenido entre las etiquetas, utilice otro modo el contenido del archivo .

Sé que esto parece un poco extraño, pero esto solucionará un gran problema de personalización de mi sitio existente sin tener que hacer cambios en incluye todo el lugar. Además, no estoy seguro de que el archivo exista antes o no.

¿Alguna idea?

Respuesta

4

Puede usar EL en <ui:include src>.

<ui:include src="/WEB-INF/testtaker/Footer#{user.prefs.footerId}.xhtml" /> 

Si #{user.prefs.footerId} vuelve null o una cadena vacía, se convertirán simplemente Footer.xhtml.

+0

Ah, sí. Estoy planeando hacer algo así. Pero el problema surge cuando el src se resuelve en algo como Footer_001.xhtml y ese archivo no existe (todavía), así que quiero incluir el contenido "predeterminado" de Footer.xhtml. ¿Tiene sentido? :) –

+1

¿Por qué tendría una identificación de pie de página no válida en primer lugar? ¿Es esta entrada 100% controlada por el usuario? (En caso afirmativo, ¿conoce usted los vectores de ataque en ese caso?) ¿Por qué no simplemente proporciona al usuario final un menú desplegable con las ID de pie de página disponibles? De todos modos, puedes verificar el constructor de prefs o quizás el método getter si ese pie de página existe. Usted podría hacer eso al verificar si 'ExternalContext # getResource()' devuelve 'null' o no. Si no existe, devuelve 'null' en su lugar. – BalusC

+0

Gracias. Eso funcionó muy bien. Sé que es un poco extraño intentar incluir un archivo que no existe, pero tenemos algunos requisitos tontos. De todos modos, tu sugerencia nos lleva por el camino correcto hacia una solución. ¡Gracias! –

Cuestiones relacionadas