example - A veces veo que JSF URL es*.jsf, a veces*.xhtml y algunas veces/faces/*. ¿Por qué?
web xml faces servlet (1)
He intentado aprender JSF y, a veces, veo que la URL es *.jsf
y, a veces, es *.xhtml
o /faces/*
. ¿Alguien puede llenar mi conocimiento, por favor? Cuando creo un JSF usando Facelet, la extensión de archivo es .xhtml
, entonces ¿de dónde .jsf
extensión de URL .jsf
?
La extensión .jsf
es donde se encuentra FacesServlet
durante el período JSF 1.2 a menudo mapeado en web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
La extensión .xhtml
es del archivo Facelets real tal como lo ha colocado físicamente en el contenido web de su aplicación web, por ejemplo, Webapp/WebContent/page.xhtml
.
Si invoca esta página con la extensión .jsf
, por ej. http://localhost:8080/webapp/page.jsf
FacesServlet
, se invocará el page.xhtml
, page.xhtml
archivo page.xhtml
y analizará / renderizará sus componentes JSF. Si no se invoca FacesServlet
, el usuario final terminará obteniendo el código fuente XHTML en bruto (que se puede ver con el botón derecho, Ver código fuente ).
Algunas veces se *.faces
extensión *.faces
o /faces/*
foldermapping. Pero esto fue desde atrás en las edades de JSF 1.0 / 1.1. Puedes elegir y utilizar cualquier mapeo al que le gustaría que FacesServlet
escuche, incluso si es un *.xyz
no dice *.xyz
. La página real en sí misma siempre debe tener la extensión .xhtml
, pero esto es configurable con el siguiente <context-param>
en web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Esto cambiará el FacesServlet
para ubicar page.xml
de (predeterminado) page.xhtml
.
Más recientemente, con JSF / Facelets 2.0 se *.xhtml
asignación *.xhtml
. En JSF / Facelets 1.x no fue posible usar la misma extensión de mapeo que el archivo físico. Daría como resultado un ciclo infinito. Pero desde JSF / Facelets 2.0 es posible y esto le permite llamar a la página http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
De esta forma, no es necesario configurar algunas restricciones de seguridad para ocultar los archivos fuente brutos en los casos en que el usuario .jsf
cambie, por ejemplo, .jsf
en la URL a .xhtml
en la barra de direcciones del navegador. Solo las herramientas (IDEs y complementos) y los recursos de aprendizaje aún necesitan ponerse al día con el movimiento recomendado de *.jsf
a *.xhtml
. Según JSF 2.3, FacesServlet
se FacesServlet
automáticamente también en *.xhtml
(junto a /faces/*
, *.faces
y *.jsf
). Esto se transfiere a Mojarra 2.2.11.
Ver también:
- ¿Podemos usar expresiones regulares en patrones de URL web.xml?
- Establecer la página de inicio predeterminada a través de <welcome-file> en el proyecto JSF
- JSF devuelve una página en blanco / sin analizar con fuente XHTML / XML / EL sin formato / sin formato en lugar de una salida HTML procesada
- ¿Cuál es la diferencia entre crear páginas JSF con la extensión .jsp o .xhtml o .jsf
- ¿Qué archivos XHTML necesito poner / WEB-INF y cuáles no?
- Personaliza FacesServlet <url-pattern> para deshacerte de la extensión .xhtml