JSF2.0 + Richfaces 3.3.3, jsp not found error

独自空忆成欢 提交于 2019-12-02 14:55:01

问题


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


回答1:


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.




回答2:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!