[Mapeamento de URL - JSF] Coloco "(.xhtml)" na URL porém a aplicação esta procurando ".jsp" =/

Prezados,
Ao acessar minha aplicação pela seguinte URL:

http://localhost:8080/artefato/page01.xhtml

Me deparo com o seguinte erro:

The requested resource (/artefato/page01.jsp) is not available.

Ele não deveria procurar minha página “.xhtml” normalmente ao invés do “.jsp”?

Segue abaixo o Web.xml e desde já, agradeço!!!


<?xml version="1.0"?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"

	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<display-name>artefato</display-name>

	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>


	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>


	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>


	<filter>
		<display-name>RichFaces Filter</display-name>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
	</filter>


	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>

	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>


	<!-- Faces Servlet -->

	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Faces Servlet Mapping -->

	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>

	<login-config>
		<auth-method>BASIC</auth-method>
	</login-config>

</web-app>

Quando você faz o start da aplicação aparece algum erro?

Seu arquivo de web.xml está com o nome web.xml ou Web.xml igual vc escreveu?

Se você tentar acessar com .jsp no final, o que acontece?

  1. Está configurado corretamente como “web.xml”.
  2. Se eu coloco na URL como “.jsf” da o mesmo erro, afinal o que eu quero é que ele procure pela minha página .xhtml ^^

Alguém? =/

Você tentou acessar como “.jsp”?

Tente colocar no seu web.xml

<context-param>
  <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  <param-value>.xhtml</param-value>
</context-param>

E alterar isso pra .JSF

	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>

Olá,
Coloquei o contexto de aplicação e extensão que você informou.

A página é encontrada normalmente quando eu altero a extensão de mapeamento da Servlet para qualquer coisa que não seja a extensão real da página.
O problema é que nesse caso, ele carrega a página porém não exibe os componentes do JSF.

Agora, Graças ao seu parametro de contexto, mudou o erro caso eu deixe a extensão igual ao da minha página…Ao invés de não achar, ele fica aguardando resposta do servidor por tempo infinito.

<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping>

Depois dessas alterações do web.xml, se tu tentar acessar a index.xhtml, por exemplo, pelo endereço index.jsf, o que acontece?

Com a extensão no web.xml configurada para “*.jsf” a página carrega normalmente, porém não aparece os componentes no JSF, somente o Hello World.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

<body>
<p>Hello World!!!</p>
<h:form>
	<h:panelGrid columns="2">
		<h:outputText value="Nome: " />
		<h:inputText value="${usuario.nome}" />

		<h:outputText value="Idade: " />
		<h:inputText value="${usuario.idade}" />

		<h:outputText value="Endereco: " />
		<h:inputText value="${usuario.endereco}" />
	</h:panelGrid>

	<h:commandButton value="Enviar! xD" action="#{usuario.enviarDados}" />
</h:form>
</body>

</html>
<?xml version='1.0' encoding='UTF-8'?>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<display-name>KeepAlive</display-name>

	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>client</param-value>
	</context-param>
	
	<context-param>  
      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>  
      <param-value>.xhtml</param-value>  
    </context-param>  

	<!-- Faces Servlet -->
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup> 1 </load-on-startup>
	</servlet>

	<!-- Faces Servlet Mapping -->
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>


	<welcome-file-list>
		<welcome-file>/pages/index.xhtml</welcome-file>
	</welcome-file-list>
</web-app>