Tentando rodar uma coisa básica com Java Server Faces pela primeira vez

7 respostas
S

Olá, estou tentando rodar uma coisa básica no java server faces, porém tem acontecido alguns problemas.

Estou usando atualmente a ide eclipse juntamente com o tomcat 5.5.

Tenho adicionado o jsp-api2.1.jar(a versão que vem com o Tomcat provocava um erro por não conter uma classe requisitada) e o servlet-api(o do tomcat).

Eu fui em http://myfaces.apache.org/ e baixei myfaces-core-1.2.0-bin.zip

Adicionei todos os jars em meu lib da minha aplicação.

Então parti para os códigos. faces-config.xml
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">      
  
  <faces-config>  
  <managed-bean>
  <description>The one and only HelloBean.</description>   
    <managed-bean-name>helloWorldBean</managed-bean-name>
    <managed-bean-class>beans.HelloWorldBean</managed-bean-class> 
	<managed-bean-scope>session</managed-bean-scope>
  </managed-bean> 
 </faces-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<display-name>java server faces</display-name>
  <description>Welcome to JavaServer Faces</description>
  
  <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>  
  
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>
HelloWorldBean.java
package beans;

public class HelloWorldBean 
{
	private String message;
	
	public HelloWorldBean()
	{
		message = "Olá mundo";
	}

	public String getMessage() 
	{
		return message;
	}
	
	public void setMessage(String message) 
	{
		this.message = message;
	}
	
}
e finalmente HelloWorld.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<html>
	<body>
		<f:view>
			<h:form>
				<h:outputText value="#{helloWorldBean.message}"></h:outputText>	
			</h:form>
		</f:view> 
	</body>
</html>

Quando tento acessar essa página HelloWorld.jsp acontece o seguinte erro.

org.apache.jasper.JasperException: Exception in JSP: /HelloWorld.jsp:5

2: <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
3:
4:
5:
6:
7:
8:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NullPointerException
org.apache.myfaces.taglib.core.ViewTag.doStartTag(ViewTag.java:88)
org.apache.jsp.HelloWorld_jsp._jspx_meth_f_view_0(HelloWorld_jsp.java:88)
org.apache.jsp.HelloWorld_jsp._jspService(HelloWorld_jsp.java:63)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.

Gostaria de saber qual é o problema. Vocês tem alguma sugestão?

7 Respostas

N

Cade a tag no seu faces-config.xml …

Vc precisa definir ela no seu arquivo…

S

Nino:
Cade a tag no seu faces-config.xml …

Vc precisa definir ela no seu arquivo…

como ficaria essa tag?

Eu tentei botar algo como

Navigation from the hello page. /HelloWorld.jsp

mas o erro persiste.

N

Acessa assim…

http://localHost:8080/NomeSeuProjeto/HelloWorld.jsp

Tem q funcionar

S

Nino:
Acessa assim…

http://localHost:8080/NomeSeuProjeto/HelloWorld.jsp

Tem q funcionar

Parece que tem algum erro ainda. Eu baixei todos os .jar do myfaces, será que falta acrecentar alguma coisa?

N

<navigation-rule> <description>Navigation from the hello page.</description> <from-view-id>/HelloWorld.jsp</from-view-id> </navigation-rule>

A pagina helloWord.jsp não pode começar com maisculo… isso deve ser problema de path…

Da uma confirmada na sua estrutura de pacotes

S

Nino:
<navigation-rule> <description>Navigation from the hello page.</description> <from-view-id>/HelloWorld.jsp</from-view-id> </navigation-rule>

A pagina helloWord.jsp não pode começar com maisculo… isso deve ser problema de path…

Da uma confirmada na sua estrutura de pacotes

Eu tentei mudar o nome da página para minúsculo agora é helloWorld.jsp

e mudei no faces-config.xml também e agora ta dando um novo erro:

SEVERE: StandardWrapper.Throwable
java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;

org.apache.myfaces.webapp.StartupServletContextListener

at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:90)
at javax.faces.webapp.FacesServlet.init(FacesServlet.java:88)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)

Estou começando a ficar irritado com esses erros, preciso catar um tutorial decente na web para ver se funciona.

leandrokjava

vc verificou os .jar na tua lib.?

e letras minusculas de maiusculas se diferem.
verifique isso.

Criado 10 de agosto de 2007
Ultima resposta 14 de nov. de 2007
Respostas 7
Participantes 3