JSF Bean

2 respostas
O

Boa noite,
Pessoa desculpe ai duvida simples…

Eu estou estudando a apostila da talita pitanga, mas eu estou com um problema que
é aparecentemente simples de resolver…

O Value do meu InputText está aparecendo dentro do input quando eu executo o
form, aparentemente ele não está reconhecendo o managed beans, o estranho
é quando estou escrevendo ele completa com o managed bean normal, mas quando executo parece que não…

Abaixo:

Inserir.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>
<center><h2> Inserção </h2></center>
<br>
<h3>Entre com os dados abaixo</h3>
<table>
<tr>
<td>Nome:</td>
<td>
<h:inputText value="#{agenda.nome}"/>
</td>
</tr>
<tr>
<td>Endereço:</td>
<td>
<h:inputText value="#{agenda.endereco}"/>
</td>
</tr>
<tr>
<td>Cidade:</td>
<td>
<h:inputText value="#{agenda.cidade}"/>
</td>
</tr>
<tr>
<td>Telefone:</td>
<td>
<h:inputText value="#{agenda.telefone}"/>
</td>
</tr>
</table>
<p>
<h:commandButton value="Inserir" action="#{agenda.inserir}"/>
</p>
</h:form>
<br>
<h:outputLink value="index.jsf">
<f:verbatim>voltar</f:verbatim>
</h:outputLink>
</f:view>
</body>
</html>

Web.xml

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>

faces-config

<?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>
<navigation-rule>
<from-view-id>/buscar.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/sucesso_busca.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/falha_busca.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/inserir.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/sucesso_insercao.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/falha_insercao.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>agencia</managed-bean-name>
<managed-bean-class>AgendaDB</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>

Classe AgendaDB

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



/**
 *
 * @author Osvaldo
 */
import java.sql.*;
public class AgendaDB {
private String nome = blank;
private String endereco = blank;
private String cidade = blank;
private String telefone = blank;
private String result_busca = blank;
private String result_inserir = blank;
public static final String BUSCA_INVALIDA = "failure";
public static final String BUSCA_VALIDA = "success";
public static final String SUCESSO_INSERCAO = "success";
public static final String FALHA_INSERCAO = "failure";
static Connection con = null;
static Statement stm = null;
static ResultSet rs;
static private String blank = "";
public AgendaDB() {
if (con==null) {
try {
Class.forName("org.postgresql.Driver");
con =
DriverManager.getConnection("jdbc:mysql://localhost/livraria", "root", "123456");
} catch (SQLException e) {
System.err.println ("Erro: "+e);
con = null;
} catch (ClassNotFoundException e) {
System.out.println("ClassNotFound...");
e.printStackTrace();
}
}
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String inserir() {
String result_inserir = FALHA_INSERCAO;
try {
stm = con.createStatement();
stm.execute("INSERT INTO pessoa(nome,endereco,cidade,telefone) VALUES ('" + nome + "','"+
endereco + "','" + cidade + "','"+ telefone + "')");
stm.close();
result_inserir = SUCESSO_INSERCAO;
} catch (SQLException e) {
System.err.println ("Erro: "+e);
result_inserir = FALHA_INSERCAO;
}
return result_inserir;
}
public String buscar() throws SQLException {
String result_busca = BUSCA_INVALIDA;
try {
stm = con.createStatement();
rs = stm.executeQuery("SELECT * FROM pessoa WHERE nome = '" + nome + "'");
if (rs.next()) {
nome = rs.getString(1);
endereco = rs.getString(2);
cidade = rs.getString(3);
telefone = rs.getString(4);
result_busca = BUSCA_VALIDA;
}
else
result_busca = BUSCA_INVALIDA;
rs.close();
stm.close();
} catch (SQLException e) {
System.err.println ("Erro: "+e);
}
return result_busca;
}
}

Obrigado :?

2 Respostas

deise.vicky
Tenta colocar na tua classe AgendaDB essa anotação:
@ManagedBean
public class AgendaDB {  

}

Eu também estou iniciando com jsf, e como estou usando a versão 2.0 não preciso mapear o meu managedBean no faces.config, coloco somente a anotação.
Uma coisa que vi no seu faces.config que não entendi neste bloco:

<managed-bean>  
       <managed-bean-name>agencia</managed-bean-name>
       <managed-bean-class>AgendaDB</managed-bean-class>  
       <managed-bean-scope>session</managed-bean-scope>  
</managed-bean>

Acho que pra mapear a tua classe seria de outra forma, tem alguma coisa errada, seria mais ou menos assim:

<managed-bean>  
       <managed-bean-name>agenda</managed-bean-name> //veja que vc tinha colocado agencia (nada a ver com o teu jsp)
       <managed-bean-class>pacotedasuaclasse.AgendaDB</managed-bean-class>  //aqui você deve mapear a classe, ou seja, deve passar todo o caminho (pacote)
       <managed-bean-scope>session</managed-bean-scope>  //aqui pode ser session, susse...
</managed-bean>

Tenta arrumar isso ou tbm fazer da primeira forma que sugeri, qualquer coisa posta aí de novo...

O

Muito Obrigado pela sugestão…

deu certo…

Obrigado

Criado 8 de junho de 2011
Ultima resposta 14 de jun. de 2011
Respostas 2
Participantes 2