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?

Foi útil?

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top