How is the URL set when an application is deployed on WAS server? Other than the context path I am setting, I am getting a /faces/ in the URL. I have no clue from where this is coming from.
- 1,082,665
- 372
- 3,610
- 3,555
- 65
- 1
- 2
- 7
1 Answers
The /faces/ is recognizable as JSF 1.0/1.1-style URL pattern where FacesServlet is often by default mapped on based on IDE-generated project configuratoin which weren't edited afterwards by the developer. You can see this in web.xml as something like this:
<servlet-mapping>
<servlet-name>Faces Servlet<servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Perhaps there's also a <welcome-file> on e.g. faces/index.xhtml or so.
In order to get rid of it, just replace it by *.xhtml.
<servlet-mapping>
<servlet-name>Faces Servlet<servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
This way you can open the JSF page by http://example.com/context/page.xhtml instead of http://example.com/context/faces/page.xhtml in order to trigger the FacesServlet (it's namely the one responsible for all the JSF works).
Or, when you're actually using legacy JSF 1.x and/or when you're actually using legacy JSP instead of its successor Facelets (XHTML), then you could use *.jsf instead.
<servlet-mapping>
<servlet-name>Faces Servlet<servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
This way you can open the JSF page by http://example.com/context/page.jsf instead of http://example.com/context/faces/page.jsp.