16

This is my web.xml :

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

When I navigate to:

http://localhost:8080/LearningRoot/index.xhtml

I can see the page just fine, however when I navigate to:

http://localhost:8080/LearningRoot/

I get the error:

An Error Occurred:

The FacesServlet cannot have a url-pattern of /*. Please define a different url-pattern.

But why?

And this is my welcome file:

<welcome-file-list>
    <welcome-file>/index.xhtml</welcome-file>
</welcome-file-list>
Community
  • 1
  • 1
Koray Tugay
  • 22,894
  • 45
  • 188
  • 319

1 Answers1

23

Because that would mean Everything that ever hits that context-root will be handled by FacesServlet, a requirement that FacesServlet already knows it couldn't possibly fulfill (It obviously doesn't make sense).

To achieve the mapping you intend, use a .xhtml mapping on FaceServlet

<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Priyantha
  • 4,839
  • 6
  • 26
  • 46
kolossus
  • 20,559
  • 3
  • 52
  • 104
  • 2
    @KorayTugay `/` will let it default to the `index` file per standard webapp processing. `/*` is an ambiguous reference – kolossus Mar 04 '13 at 21:39