JSF2.0 + Richfaces 3.3.3, jsp not found error

匿名 (未验证) 提交于 2019-12-03 02:34:02

问题:

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


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