El patrón de URL de páginas JSF se especifica por <servlet-mapping>
del FacesServlet
en web.xml
. Como se ha mencionado que .xhtml
funciona bien, que al parecer ha configurado de la siguiente manera:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Es necesario cambiar la <url-pattern>
en consecuencia para conseguir la extensión deseada URL virtual.
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Eso es todo lo que necesita cambiar para cumplir realmente los requisitos funcionales concretos.
Sin embargo,, esto pone un problema de seguridad abierto. El usuario final ahora puede ver el código fuente del archivo Facelets sin formato al cambiar la extensión en la URL de .jsf
a .xhtml
. Esto se puede evitar mediante la adición de la siguiente restricción de seguridad a web.xml
:
<security-constraint>
<display-name>Restrict access to Facelets source code.</display-name>
<web-resource-collection>
<web-resource-name>Facelets</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
Hoy en día es objeto de prestigio para acabar con ella con '.do'. –
@RomanC ¿No fue lo popular en 2001? (Struts 1) Hoy en día, no usar una extensión podría ser más frío;) Para JSF puedes usar OmniFaces o PrettyFaces para eso. –
Es tan popular que lo añaden a cada ISBN, por ejemplo http://shop.oreilly.com/product/9780596005726.do –