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
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.
Return null in displayButtonAction method
public String displayButtonAction() {
displayValue = username;
return null;
}
OR rewrite your action method with return type void
public void displayButtonAction() {
displayValue = username;
}
来源:https://stackoverflow.com/questions/8863014/jsf2-0-richfaces-3-3-3-jsp-not-found-error