Olá, eu estou tentando a horas rodar algum exemplo em jsf. Segue meu código.
Criei um pacote de nome trabalho.topicos2 no src:
Segue minha classe Agenda.
package trabalho.topicos2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Agenda {
Map<Integer,Contato> listContatos;
Contato contato;
private int count = 0;
public Agenda(){
listContatos = new HashMap<Integer,Contato>();
contato = new Contato();
Contato contato1 = new Contato();
contato1.setNome("Gustavo Sobral Carneiro");
contato1.setEmail("[email removido]");
contato1.setCelular("022-99788066");
contato1.setTelefone("028-35571180");
contato1.setId(contato1.getId());
listContatos.put(contato1.getId(),contato1);
}
public String salvar(){
try {
if((!contato.getId().equals(""))
&& (!listContatos.containsKey(contato.getId()))){
listContatos.put(contato.getId(),contato);
contato = new Contato();
return "sucesso";
}else if(listContatos.containsKey(contato.getId())){
contato = new Contato();
return "sucesso";
}
} catch (Exception e) {
e.printStackTrace();
}
return "fail";
}
public String excluir(){
if(contato!=null){
listContatos.remove(contato.getId());
contato = new Contato();
return "sucesso";
}
return "fail";
}
public String novo() {
contato = new Contato();
contato.setId(Integer.valueOf(gerarId()));
return "novo";
}
public List<Contato> getlistContatos() {
return new ArrayList<Contato>(listContatos.values());
}
public Contato getcontato() {
return contato;
}
public void setcontato(Contato contato) {
this.contato = contato;
}
public int gerarId(){
return count++;
}
}
Segue minha classe Contato:
package trabalho.topicos2;
public class Contato {
private String nome,telefone,celular, email;
private Integer id;
public Contato() {
}
public Contato(String nome, String telefone, String celular, String email, Integer id) {
this.nome = nome;
this.telefone = telefone;
this.celular = celular;
this.email = email;
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
dentro do WEBContent criei uma pasta chamada Agenda e dentro desta pasta criei uma jsp chamada listarContatos.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Tela de Cadastro</title>
<script type="text/css">
.tituloColuna {
background-color: #ECE9D8;
}
.colunaPar {
background-color: #0066CC;
}
.colunaImpar {
background-color: #FFFFF;
}
</script>
</head>
<body>
<f:view>
<h:form prependId="false">
<h:dataTable value="#{agenda.listContatos}" var="contato"
headerClass="tituloColuna" rowClasses="colunaPar,colunaImpar" border="1">
<h:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{contato.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Telefone" />
</f:facet>
<h:outputText value="#{contato.telefone}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Celular" />
</f:facet>
<h:outputText value="#{contato.celular}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="E-mail" />
</f:facet>
<h:outputText value="#{contato.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Remover" />
</f:facet>
<h:commandLink action="#{agenda.excluir}"
style="text-decoration:none;">
<h:outputText value="X" />
<f:setPropertyActionListener value="#{contato}"
target="#{agenda.contato}" />
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
<managed-bean-name>contato</managed-bean-name>
<managed-bean-class>trabalho.topicos2.Contato</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>agenda</managed-bean-name>
<managed-bean-class>trabalho.topicos2.Agenda</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
meu web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>AgendaContatos</display-name>
<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>/Agenda/listarContatos.jsp</welcome-file>
</welcome-file-list>
<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>
<url-pattern>/*.jsf/</url-pattern>
</servlet-mapping>
</web-app>
e as libs que eu add:
commons-beanutils
commons-collections
commons-digester-1.8
commons-logging
jsf-api
jsf-impl
jsf-tlds
jsp-api
jstl
standard
coloquei as mesmas jars no tomcat, só não subtitui o jsp-api.
estou usando o Eclipse.
Se alguém puder evitar que eu quebre meu notebook me ajudando nisso eu agradeceria, eu tenho um exemplo rodando aqui e já olhei cada canto comparando e não sei pq esse erro ocorre.
HTTP Status 404 -
type Status report
message
description The requested resource () is not available.
Apache Tomcat/6.0.32
Estou digitendo no browser:
http://localhost:8080/AgendaContatos/Agenda/listarContatos.jsf
:@