Pergunta de conceito Porque welcome-file do web.xml não aceita arquivo xhtml?

Boa noite tem algo que eu sempre quis saber o motivo e nunca descobri.
Porque welcome-file do arquivo web.xml só aceita arquivo do tipo jsp e não xhtml

Meu prjeto e JSF+facelets com Jboss Tools no eclipse

Que eu saiba, o web.xml nao tem limitacao quanto ao tipo de arquivo do welcome-file-list.

A questao é que, quando voce usa JSF + Facelets, como voce disse, voce deve mapear o JSF+Facelets para usarem o .xhtml.
Dai voce pode mapear o xhtml no welcome-file-list. Senao, nao adianta de nada. Provavelmente é seu mapeamento dos frameworks que está errado. Dá mais uma olhadinha nisso, usa exemplos da internet e veja se descobre o que tem de errado.

Aceita o xhtml de maneira normal.
A maior prova disso é que no jsf 2.0 o padrão já é o xhtml, inclusive as páginas iniciais.

Obrigado pelas resposta so que meu projeto e jsf1.2

sobre esta co prolema meu projeto na minha pagina jsp tem o seguinte codigo e funciona certinho

index.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head></head>
	<body>
		<jsp:forward page="/pages/inputname.jsf" />
	</body>
</html>

web.xml

<?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">
 <description>Facelets StarterKit</description>
 <display-name>teste</display-name>
 <context-param>
  <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  <param-value>.xhtml</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.REFRESH_PERIOD</param-name>
  <param-value>2</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.DEVELOPMENT</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>client</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.validateXml</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.verifyObjects</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.SKIP_COMMENTS</param-name>
  <param-value>true</param-value>
 </context-param>
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>/index.jsp</welcome-file>
 </welcome-file-list>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

faces-config

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 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-facesconfig_1_2.xsd">
 <managed-bean>
  <managed-bean-name>person</managed-bean-name>
  <managed-bean-class>demo.Person</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
   <property-name>name</property-name>
   <value/>
  </managed-property>
 </managed-bean>
 <navigation-rule>
  <from-view-id>/pages/inputname.xhtml</from-view-id>
  <navigation-case>
   <from-outcome>greeting</from-outcome>
   <to-view-id>/pages/greeting.xhtml</to-view-id>
  </navigation-case>
 </navigation-rule>
 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  <locale-config/>
 </application>
 <factory/>
 <lifecycle/>
</faces-config>

detalhe seu eu mudo o welcome-file para uma pagina tipo

 <welcome-file-list>
  <welcome-file>/pages/inputname.xhtml</welcome-file>
 </welcome-file-list>

ao acessar o dominio ele abre a janela de download do arquivo ate ai tudo certo pois especifiquei q vou usar ao inves de xhtml jsf

so que se eu mudar para

 <welcome-file-list>
  <welcome-file>/pages/inputname.jsf</welcome-file>
 </welcome-file-list>

da erro de 404

nesse caso vc terá que adicionar as libs para o faclet e jstl.
Já que no jsf 1.2 eles não são nativos

ja adicionei, o projeto esta funcionando perfeitamente o unico problema e o welcome-file

leonardobhbr, pelo que entendi, você tem páginas e jsp e xhtml no mesmo projeto, certo? então você deve estar fazendo alguma confunsão em usar JSF + JSP ou JSF + faceletes, porque se eu o seu projeto foi configurado para usar xhtml não tem porque ter páginas em JSP

Obrigado pela resposta sobre a pagina JSP esse projeto foi criado automaticamente pelo plugin Jboss Tools no eclipse

ele ja criou os beans e as paginas de exemplo o interessante e que ele cria um arquivo jsp so para redirecionar para pagina xhtml e como eu disse se tentar configurar o ]welcome-file para um arquivo xhtml da erro 404

Ok leonardobhbr, me parece estranho ter arquivos XHTML e JSP no mesmo projeto, mas já que funciona então tudo bem.

Voltando a sua dúvida, acho que o que está acontecendo é o seguinte: Se você colocar o index.jsp no welcome-file funciona porque nesta página não tem código JSF, certo? E como nas páginas XHTML existem código JSF, então dá erro.
Resumindo: Se vc tem código JSF ná página inicial então ela deve ser especificada no welcome-file com a mesma extensão configurada no servlet-mapping que no seu caso é .jsf. Caso contrário deve-se colocar a extensão original da página, jsp ou xhtml, por exemplo.

[quote=marcos1EM]Ok leonardobhbr, me parece estranho ter arquivos XHTML e JSP no mesmo projeto, mas já que funciona então tudo bem.

Voltando a sua dúvida, acho que o que está acontecendo é o seguinte: Se você colocar o index.jsp no welcome-file funciona porque nesta página não tem código JSF, certo? E como nas páginas XHTML existem código JSF, então dá erro.
Resumindo: Se vc tem código JSF ná página inicial então ela deve ser especificada no welcome-file com a mesma extensão configurada no servlet-mapping que no seu caso é .jsf. Caso contrário deve-se colocar a extensão original da página, jsp ou xhtml, por exemplo.
[/quote]

Concordo plenamente com vc so q quando eu coloco a pagina.xhtml ele abre a tela de download como eu disse antes, tudo bem concordo q o procedimento parece certo ja que especifiquei no filter que seria jsf.

So que quando eu coloco pagina.jsf da error 404

Também estou com o mesmo problema… Se alguém puder ajudar… manda ae…

Olá,

Na verdade o problema não é com o JSF. A questão é que o welcome-file não aceita mapeamento de servlet, só caminho de arquivo mesmo (HTML ou JSP).

Tem dois jeitos de contornar: montar a página inicial em JSP mesmo ou (aviso: gambiarra à frente) colocar como welcome-file um HTML que redireciona para a página principal de verdade (JSF) através daquelas diretivas “META Refresh”.

cara… tive um problema desse de toda vez que rodasse determinada página ele abria a janela de download. Resolvi da seguinte forma usando o eclipse:
Clicar com o botão direito no projeto => Properties => Project Facets => marque o JavaServer Faces…

no meu caso era isso que acontecia quando o projeto nao estava habilitado para jsf.