Às vezes vejo JSF URL é *.jsf, às vezes *.xhtml e às vezes /faces / *. Por quê?
-
26-09-2019 - |
Pergunta
Tenho tentado aprender JSF, e às vezes vejo o URL é *.jsf
e às vezes é *.xhtml
ou /faces/*
. Alguém pode preencher meu conhecimento, por favor? Quando eu crio um JSF usando o Facelet, a extensão do arquivo é .xhtml
, então onde .jsf
Extensão de URL vem?
Solução
o .jsf
extensão é onde o FacesServlet
é durante o período JSF 1.2 frequentemente mapeado no web.xml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
o .xhtml
extensão é do real FaceLets Arquivo Como você colocou fisicamente no conteúdo da web do seu WebApp, por exemplo, Webapp/WebContent/page.xhtml
.
Se você invocar esta página com o .jsf
Extensão, por exemplo http://localhost:8080/webapp/page.jsf
então o FacesServlet
será chamado, localize o page.xhtml
Arquivo e analisar/renderizar seus componentes JSF. Se o FacesServlet
Não é invocado, então o EndUser acabaria recebendo o código -fonte XHTML bruto (que pode ser visto pelo clique direito, Ver fonte).
Às vezes a *.faces
extensão ou /faces/*
Followermapping foi usado. Mas isso foi de volta ao JSF 1.0/1.1 idades. Você é livre para escolher e usar o mapeamento que gostaria de deixar FacesServlet
Ouça, mesmo que seja um nada que seja *.xyz
. A página real em si deve sempre ter o .xhtml
extensão, mas isso é configurável pelo seguinte <context-param>
dentro web.xml
:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xml</param-value>
</context-param>
Isso vai mudar o FacesServlet
localizar page.xml
Instad de (padrão) page.xhtml
.
Mais recentemente, com JSF/Facelets 2.0 A *.xhtml
Mapeamento é usado. No JSF/Facelets 1.x, não foi possível usar a mesma extensão de mapeamento que o arquivo físico. Isso resultaria em um loop infinito. Mas como JSF/Facelets 2.0 é possível e isso permite ligar para a página por http://localhost:8080/webapp/page.xhtml
.
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Dessa forma, você não precisa configurar algumas restrições de segurança para ocultar os arquivos de origem bruta para os casos sempre que o enduser muda, por exemplo, .jsf
em url para .xhtml
Na barra de endereço do navegador. Somente ferramentas (IDEs e plugins) e recursos de aprendizado ainda precisam recuperar o atraso da mudança de *.jsf
para *.xhtml
. Conforme JSF 2.3, o FacesServlet
por padrão será autorizado de acordo com *.xhtml
também (ao lado de /faces/*
, *.faces
e *.jsf
). Isso é retratado para Mojarra 2.2.11.
Veja também:
- Podemos usar expressões regulares nos padrões de URL da web.xml?
- Defina a página inicial padrão viau003Cwelcome-file> No projeto JSF
- JSF retorna a página em branco/sem parsento com fonte simples/bruta xhtml/xml/el em vez de renderizada html saída
- Qual é a diferença entre criar páginas JSF com .jsp ou .xhtml ou .jsf extension
- Quais arquivos xhtml eu preciso colocar /web-inf e quais não?
- Personalize o FACESESVLETu003Curl-pattern> para se livrar da extensão .xhtml