JSF2.0 + Richfaces 3.3.3,jsp未找到错误

时间:2012-01-14 15:00:30

标签: tomcat jsf-2 richfaces netbeans-6.9

我在Netbeans6.9.1中使用JSF2.0 + Richfaces3.3.3 + tomcat6.0.29创建了简单的项目

第1步:文件 - > NewProject +选择JSF 2.0 +首选页面语言为 JSP

第2步:Jar

JSF2.0 jsf-api.jar
JSF2.0 jsf-impl.jar
JSTL1.1 - Standard.jar
JSTL1.1 - jstl.jar
jsf-facelets.jar (Facelets 1. 1. 15)
richfaces-api-3.3.3.Final.jar
richfaces-ui-3.3.3.Final.jar
richfaces-impl-jsf2-3.3. 3.Final.jar
commons-beanutils-1.8.3.jar
commons-collections-3.2. 1.jar
commons-digester-2.0.jar
commons-logging-1.1.1.jar and hth-api-0.4.0.jar

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</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>/faces/*</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
    <param-value>true</param-value>
</context-param>

 <context-param>
    <param-name>org.richfaces.SKIN</param-name>
    <param-value>blueSky</param-value>
</context-param>


<!--Configuration for Richfaces-->
<filter>
    <display-name>RichFaces Filter</display-name>
    <filter-name>richfaces</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>richfaces</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<!--End of the configuration part for Richfaces-->

<!--Configuration for Facelets-->
<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.jsp</param-value>
</context-param>
<context-param>
    <param-name>facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>facelets.VIEW_MAPPINGS</param-name>
    <param-value>*.xhtml</param-value>
</context-param>
<context-param>
    <param-name>facelets.SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>
<!--End of the configuration part for Facelets-->


<welcome-file-list>
    <welcome-file>faces/welcomeJSF.jsp</welcome-file>
</welcome-file-list>
</web-app>

和faces-config.xml文件

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.0"
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">

 <managed-bean>
    <description>Managed Bean for HomeContent</description>
    <managed-bean-name>Sample1</managed-bean-name>
    <managed-bean-class>com.test.Sample1</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

</faces-config>

了welcomeJSF.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<f:view>
 <html>
<head>   
    <title>JSP Page</title>
</head>
    <body>
      <h:form id="sampleForm" binding="#{Sample1.initForm}">               

        <a4j:outputPanel id="sampleOutputPanel">

          <h:outputText value="UserName : "/>
          <h:inputText value="#{Sample1.username}"/>

          <a4j:commandButton value="Test" 
                             reRender="sampleOutputPanel,output"
                             action="#{Sample1.displayButtonAction}"/>

         <h:outputText id="output" 
         value="Typed username : #{Sample1.displayValue}"/>
    </a4j:outputPanel>
</rich:panel>
</h:form></body> </html></f:view>

和Sample1.java

package com.test;
import javax.faces.component.html.HtmlForm;

public class Sample1 {

    private HtmlForm initForm;
    private String username;
    private String displayValue;

    public String displayButtonAction() {
        displayValue = username;
        return "";
    }


    public HtmlForm getInitForm() {
        username = "";
        return initForm;
    }


    public void setInitForm(HtmlForm initForm) {
        this.initForm = initForm;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getDisplayValue() {
        return displayValue;
    }

    public void setDisplayValue(String displayValue) {
        this.displayValue = displayValue;
    }
}

我的问题是:

将我的战争部署到我的tomcat6.0.29后,运行我的应用程序。 当我单击a4j:commandbutton时发生以下错误

HTTP Status 404 - /.jsp not found
type Status report
message /.jsp not found
description The requested resource (/.jsp not found) is not available.
Apache Tomcat/6.0.29

帮帮我。 提前致谢

2 个答案:

答案 0 :(得分:1)

在displayButtonAction方法中返回null

public String displayButtonAction() {
    displayValue = username;         
    return null;     
}

或者用返回类型void

重写你的action方法
public void displayButtonAction() {
        displayValue = username;         

    }

答案 1 :(得分:1)

您的操作的返回值用于查找要显示的新视图。通过在faces-config中找到匹配项,或者如果没有映射,可以直接使用它作为页面名称。当您返回一个空字符串时,最终只有.jsp作为文件名。如果你想回到同一页面,则返回null而不是空字符串。