A veces veo JSF URL es * .jsf, a veces ya veces * .xhtml / faces / *. ¿Por qué?
-
26-09-2019 - |
Pregunta
intento sido aprender JSF, ya veces veo la URL es *.jsf
y, a veces es *.xhtml
o /faces/*
. Alguien puede llenar mis conocimientos, por favor? Cuando creo un JSF usando Facelet, la extensión del archivo es .xhtml
, así que ¿de dónde viene la extensión URL de .jsf
?
Solución
La extensión .jsf
es donde el FacesServlet
es durante el período de JSF 1.2 a menudo asignada en en el web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
La extensión es .xhtml
de la real archivo Facelets como usted ha colocado físicamente en el contenido de la web de la aplicación web, por ejemplo, Webapp/WebContent/page.xhtml
.
Si se invoca esta página con la extensión .jsf
, por ejemplo, http://localhost:8080/webapp/page.jsf
entonces el FacesServlet
será invocado, localizar el archivo de análisis page.xhtml
y / render sus componentes JSF. Si el FacesServlet
no se invoca, a continuación, el usuario final podría terminar encima de conseguir el código fuente XHTML prima (que puede ser visto por el botón derecho del ratón, Ver código ).
se ha utilizado a veces una extensión *.faces
o foldermapping /faces/*
. Pero esto era de nuevo en las edades JSF 1.0 / 1.1. Usted es libre de elegir y utilizar cualquier asignación desea dejar FacesServlet
escuchar, incluso si se trata de un *.xyz
nada, diciendo. La página en sí debe tener siempre la extensión .xhtml
, pero esto es configurable por 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 localizar instad page.xml
de page.xhtml
(por defecto).
Más recientemente, con JSF / Facelets 2.0 se ha utilizado un mapeo *.xhtml
. En JSF / Facelets 1.x no fue posible usar la misma extensión que el archivo de mapeo físico. Que daría lugar a un bucle infinito. Pero desde JSF / Facelets 2.0 es posible y esto le permite llamar a la página por http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
De esta manera no es necesario configurar algunas restricciones de seguridad para ocultar los archivos de origen primas de distancia para los casos cada vez que el usuario final cambia, por ejemplo, en .jsf
URL para .xhtml
en la barra de direcciones del navegador. Sólo los útiles (IDE) y plugins y recursos de aprendizaje todavía tienen que ponerse al día el movimiento defendido desde *.jsf
a *.xhtml
. De acuerdo con JSF 2.3, el FacesServlet
se emitirá por defecto autoregistered en *.xhtml
también (junto a /faces/*
, *.faces
y *.jsf
). Esto es portado a Mojarra 2.2.11.
Ver también:
- podemos usar expresiones regulares en web.xml patrones de URL?
- Establecer página de inicio predeterminada a través de
en el proyecto JSF - vuelve JSF blanco / página no analizada con fuente de llanura / prima XHTML / XML / EL lugar de salida HTML representado
- ¿Cuál es la diferencia entre la creación de páginas JSF con .jsp o la extensión .xhtml o .jsf
- archivos XHTML Qué necesito para poner en / WEB-INF y cuáles no?
- Personalizar FacesServlet
a deshacerse de la extensión .xhtml