Search code examples
tomcatjsf-2richfacesnetbeans-6.9

JSF2.0 + Richfaces 3.3.3, jsp not found error


I created simple project using JSF2.0 + Richfaces3.3.3 + tomcat6.0.29 in Netbeans6.9.1

Step1 : File -> NewProject + Select JSF 2.0 + Prefered Page Language as JSP

Step 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 file

<?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>

and faces-config.xml file

<?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>

and 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;
    }
}

MY problem is :

After deploy my war into my tomcat6.0.29, run my application. When i click the a4j:commandbutton the following error occur

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

Help me. Thanks in advance


Solution

  • The return value of your action is used to find the new view to display. Either by finding a match for it in faces-config or if there is no mapping there by using it directly as the name of the page. As you return an empty string you end up with only .jsp as the filename. If you want to go back to the same page return null instead of an empty string.