I created a simple Web Application in Eclipse using JSF 2.2 and running it through WebSphere 8.5. However, when I pull the index page up in the browser using http://localhost:9082/HCVA/index.xhtml I just get a blank page. I wrote the whole web page just using JSF tags and when I look in the debugger I see that the JSF tags are not being rendered as HTML. If I add and HTML tag like <p>test</p>
then it does show "test" in the browser. Here's the whole index page so far:
<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>HCVA</title>
</h:head>
<h:body>
<h:panelGroup id="header" layout="block" styleClass="headerClass">
<h:graphicImage value="/images/NewOntarioLogo.gif" alt="Ontario Logo" border="0" />
<h:outputText value="Health Card Viewer Application"/>
<p>test</p>
</h:panelGroup>
<h:panelGroup id="navigate" layout="block">
</h:panelGroup>
<h:panelGroup id="mainContent" layout="block">
</h:panelGroup>
<h:panelGroup id="footer" layout="block" styleClass="footerClass">
<h:graphicImage value="/images/NewOntarioLogo.gif" alt="Ontario Logo" border="0" />
<br></br>
<h:outputText value="This site is maintained by the Government of Ontario, Canada."/>
<br></br>
<h:link value="PRIVACY" outcome="http://www.ontario.ca/en/general/004222"/>
<h:outputText value="|"/>
<h:link value="IMPORTANT NOTICES" outcome="http://www.ontario.ca/en/general/004222"/>
<br></br>
<h:outputText value="Copyright information:"/>
<h:link value="© Queen's Printer for Ontario, 2006" outcome="http://www.ontario.ca/en/general/004222"/>
<br></br>
<h:outputText value="Last Modified: 2009-12-12"/>
</h:panelGroup>
</h:body>
</html>
I've seen other posts about this and I know that this problem could mean that the page isn't passed through the FacesServlet. However, I have verified that the request URL used matches the url-pattern of the FacesServlet. Here's what my web.xml looks like:
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_3_0.xsd"
version="3.0">
<display-name>HCVA</display-name>
<context-param>
<description>
The location where state information is saved.
Valid values are 'server' (typically saved in HttpSession) and 'client' (typically
saved as a hidden field in the form.
Default is server.</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<description>
Comma-delimited list of context-relative resource paths under which the JSF implementation
will look for application configuration resources, before loading a configuration resource
named /WEB-INF/faces-config.xml (if such a resource exists).</description>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value></param-value>
</context-param>
<context-param>
<description>
The default suffix for extension-mapped resources that contain JSF components.
Default is '.jsp'.</description>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<description>
A human readable string describing where this particular JSF application is
in the software development lifecycle.
Valid values are 'Development', 'UnitTest', 'SystemTest' and 'Production'.
Default is 'Production'.
This parameter is not available in JSF 1.x.</description>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<description>
Monitors Faces JSP files for modifications and synchronizes a running server with
the changes without restarting the server. If this parameter is set to false or
removed from the deployment descriptor, any changes made to Faces JSP files may
not be seen by the server until it is restarted. This parameter is usually set
to true while the Faces JSP files are being developed and debugged in order to
improve the performance of the development environment.</description>
<param-name>com.ibm.ws.jsf.JSP_UPDATE_CHECK</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>
Load JSF runtime when the application server starts up. If this parameter is set to false or removed,
JSF runtime will be loaded and initialized when the first JSF request is processed.
This may disable custom JSF extensions, such as factories defined in the project.</description>
<param-name>com.ibm.ws.jsf.LOAD_FACES_CONFIG_AT_STARTUP</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>
<enabled>true</enabled>
<async-supported>false</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>
*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
Been troubleshooting this for a long time with no results. Any help would be appreciated.
WebSphere 8.5 does not provide a JSF 2.2 implementation - only JSF 1.2 via SunRI and JSF 2.0 via MyFaces. Unless you're providing a third-party JSF implementation, you will need to update your application to make use of the correct JSF spec level.