我在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
帮帮我。 提前致谢
答案 0 :(得分:1)
在displayButtonAction方法中返回null
public String displayButtonAction() {
displayValue = username;
return null;
}
或者用返回类型void
重写你的action方法public void displayButtonAction() {
displayValue = username;
}
答案 1 :(得分:1)
您的操作的返回值用于查找要显示的新视图。通过在faces-config中找到匹配项,或者如果没有映射,可以直接使用它作为页面名称。当您返回一个空字符串时,最终只有.jsp作为文件名。如果你想回到同一页面,则返回null而不是空字符串。