JSF页面未呈现为HTML

JSF页面未呈现为HTML,jsf,jsf-1.2,Jsf,Jsf 1.2,我正在尝试运行一个非常基本的JSF页面。使用WebSphere7.0作为服务器,因此我尝试使用JSF1.2。浏览器没有呈现html,我的意思是它只是显示所有html代码,包括doctype等。 我的第一个猜测可能是,它没有通过FacesServlet,但是当url模式不匹配时,它会得到找不到的页面。 这是JSF版本的问题吗?还有其他想法吗?谢谢各位 我在lib文件夹中包括了jstl-api-1.2.jar和jstl-imp-1.2.jar 我已设置了以下web.xml: <?xml ver

我正在尝试运行一个非常基本的JSF页面。使用WebSphere7.0作为服务器,因此我尝试使用JSF1.2。浏览器没有呈现html,我的意思是它只是显示所有html代码,包括doctype等。
我的第一个猜测可能是,它没有通过FacesServlet,但是当url模式不匹配时,它会得到找不到的页面。 这是JSF版本的问题吗?还有其他想法吗?谢谢各位

我在lib文件夹中包括了jstl-api-1.2.jar和jstl-imp-1.2.jar

我已设置了以下web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <context-param>
        <param-name>javax.faces.application.CONFIG_FILES</param-name>
        <param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

Facesservlet
javax.faces.webapp.FacesServlet
Facesservlet
*.jsf
javax.faces.PROJECT_阶段
发展
javax.faces.application.CONFIG_文件
/WEB-INF/faces-config.xml
javax.faces.DEFAULT_后缀
.xhtml
index.jsp
index.html
faces-config.xml:

<?xml version="1.0"?>
<faces-config 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-facesconfig_1_2.xsd"
   version="1.2">
</faces-config>

index.jsp:

<% response.sendRedirect("page-a.jsf"); %>

以及xhtml文件的开头:

<!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://java.sun.com/jsf/html">

您似乎试图将JSF1.2与Facelets 1.x结合使用。这很好,但是Facelets视图处理程序在
faces config.xml
中丢失。您应该在其中包含以下条目:

<application>
    <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>    
</application>
用于此的文件

还要注意的是,您实际上不需要随webapp一起提供;WebSphere7作为一个成熟的JavaEE5应用服务器,已经自己提供了它。我建议删除这些JSTLJAR文件,因为它可能与WebSphere提供的文件冲突。JSF也已经由WebSphere提供,但Facelets不是,因为自JavaEE6以来,它只是JavaEE的一部分


由于缺乏Facelets视图处理程序,我想知道您是否阅读了正确的Facelets教程(由于JSF 2.0,Facelets
配置不是强制性的,因为它已经是默认的视图处理程序,所以您可能无意中阅读了针对JSF 2.0的教程,而实际上应该阅读针对JSF 1.x的教程),因此,为了完整起见,这里有一个指向的链接。

看起来您正在项目中使用Facelets。如果是这种情况,那么后缀和模式就有问题:facesservlet将处理每个*.jsf页面,即
http://YourServerIP/YourProject/index.jsf
,但默认后缀是xhtml。尝试将FacesServlet模式更改为*.xhtml,并检查您是否正在访问页面,如
http://YourServerIP/YourProject/index.xhtml