4

我是jsf的新手。我有一个 Maven 项目,它在 websphere 8 上运行。我使用 jsf 和richfaces。我收到此错误:

Error Parsing /viewMetadata/index.xhtml: Error Traced[line: 2] The element type "html" must be terminated by the matching end-tagend with '>'. 

faces-config.xml 看起来像:(它是 leer。我目前没有 managedbean)

<?xml version="1.0" encoding="UTF-8"?>

<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_2_0.xsd"
    version="2.0">


</faces-config>

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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>My project</display-name>
  <welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>blueSky</param-value>
  </context-param>
  <context-param>
    <param-name>org.richfaces.enableControlSkinning</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
  </context-param>
  <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  </listener>

  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>    
  </servlet-mapping>  
</web-app>

最后是我的第一个 jsf 页面.. (index.xhtml)

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich">
<h:head>
    <title>RichFaces Greeter</title>
</h:head>
<h:body>
    <f:view>
        <h:form>
            <rich:panel header="RichFaces Greeter 5" style="width: 315px">
                <rich:inputNumberSlider minValue="1" maxValue="100"
                    showInput="false" />
                <rich:inputNumberSpinner minValue="1" maxValue="100" />
                <rich:calendar id="date" value="#{bean.dateTest}"
                    oncurrentdateselect="if (!confirm('Are you sure to change month(year)?')){return false;}"
                    oncurrentdateselected="alert('month(year) select:'+event.rich.date.toString());" />


            </rich:panel>

        </h:form>
    </f:view>
</h:body>
</html>

我的 POM.xml 看起来像:(可能缺少一些库??)

<dependencies>
        <dependency>
            <groupId>org.richfaces</groupId>
            <artifactId>richfaces-bom</artifactId>
            <type>pom</type>
            <version>4.2.2.Final</version>
        </dependency>   

        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.0.2</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>MyWeb</finalName>
    </build>
</project>
4

2 回答 2

2

从您的 POM.xml 我判断您正在使用 mojarra JSF 实现。但是您的 web.xml 部分指的是 Apache MyFaces(Mojarra 是 JSF 的参考实现,MyFaces 是 apache 基金会的竞争实现)。让我们坚持使用 mojarra。所以失去了听众。然后您缺少负责处理 JSF 页面的 JSF servlet 的声明,因此必须添加。这是带有建议修改的 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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>GEm project</display-name>
  <welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <context-param>
    <param-name>org.richfaces.skin</param-name>
    <param-value>blueSky</param-value>
  </context-param>
  <context-param>
    <param-name>org.richfaces.enableControlSkinning</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</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>*.xhtml</url-pattern>    
  </servlet-mapping>
</web-app>
于 2012-08-09T16:49:55.557 回答
0

错误说它在 index.xhtml 中。你为什么在别处寻找?有时,如果您在不属于它的地方添加了一个额外的标签,它可能会打乱页面的解析。确保所有标签都在正确/预期的位置正确关闭。也就是说,对于每个 <xyz> 标签,都有一个对应的 </xyz> 标签,或者如果不需要结束标签,则使用 <xyz /> 创建它(注意 'z' 和 '/' 之间的空格)。这是 XHTML 而不是 html。所有标签都需要正确关闭。它不像 HTML 那样宽容。并确保结束标签位于正确的位置。

于 2012-08-12T19:07:32.977 回答