JSF+Hibernate ( Erro na geração de lista no xhtml)[Resolvido]

14 respostas
raffamz
Amigos, Estou com o erro:
javax.servlet.ServletException: For input string: "numero"
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

Minha index:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">

<h:head>
<title>Agenda de contatos</title>
</h:head>
<h:body>
<center>
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="Nome: " for="nome"/>
<h:inputText id="nome" value="#{pessoaBean.pessoa.nome}"/>

<h:outputLabel value="Endereço: " for="logradouro" />
<h:inputText id="logradouro" value="#{pessoaBean.endereco.logradouro}"/>

<h:outputLabel value="Complemento: " for="complemento"/>
<h:inputText id="complemento" value="#{pessoaBean.endereco.complemento}"/>

<h:outputLabel value="Bairro: " for="bairro"/>
<h:inputText id="bairro" value="#{pessoaBean.endereco.bairro}"/>

<h:outputLabel value="CEP: " for="cep"/>
<h:inputText id="cep" value="#{pessoaBean.endereco.cep}"/>


<h:outputLabel value="(DDD): " for="ddd"/>
<h:inputText id="ddd" value="#{pessoaBean.telefone.ddd}"/>

<h:outputLabel value="Telefone: " for="telefone"/>
<h:inputText id="telefone" value="#{pessoaBean.telefone.numero}"/>

<h:commandButton value="Gravar" action="#{pessoaBean.grava}"/>

</h:panelGrid>
</h:form>
<h:form>
<h:panelGrid columns="2">

<h:dataTable value="#{pessoaBean.telefones}" var="telefones">
</h:dataTable>

<h:dataTable value="#{pessoaBean.pessoas}" var="pessoa">
<h:column>
<f:facet name="header">Nome</f:facet>
#{pessoa.nome}
</h:column>
<h:column>
<f:facet name="header">Telefone</f:facet>
#{pessoa.telefone.numero}
</h:column>
<h:column>
<h:commandLink value="Alterar">
<f:setPropertyActionListener value="#{pessoa}" target="#{pessoaBean.pessoa}"/>
</h:commandLink>
</h:column>
</h:dataTable>



</h:panelGrid>

</h:form>
</center>
</h:body>
</html>
Classe Pessoa:
package com.souza.modelo;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Pessoa {

	@Id
	@GeneratedValue
	@Column(name = "id_pessoa")
	private Integer id;
	private String nome;


	@OneToMany(fetch = FetchType.LAZY, mappedBy = "pessoa", targetEntity = Endereco.class)
	private List<Endereco> endereco;


	@OneToMany(fetch = FetchType.LAZY, mappedBy = "pessoa", targetEntity = Telefone.class)
	private List<Telefone> telefone;
	

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public List<Endereco> getEndereco() {
		return endereco;
	}

	public void setEndereco(List<Endereco> end1) {
		this.endereco = end1;
	}

	public List<Telefone> getTelefone() {
		return telefone;
	}

	public void setTelefone(List<Telefone> tel1) {
		this.telefone = tel1;
	}

}

Classe Telefone:

package com.souza.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Telefone {
	
	@Id
    @GeneratedValue
    @Column(name="id_tel")
    private Integer idTel;
    private Integer ddd;
    private Integer numero;
    
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="id_pessoa", referencedColumnName = "id_pessoa")
    private Pessoa pessoa;

	public Integer getIdTel() {
		return idTel;
	}

	public void setIdTel(Integer idTel) {
		this.idTel = idTel;
	}

	public Integer getDdd() {
		return ddd;
	}

	public void setDdd(Integer ddd) {
		this.ddd = ddd;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
}

Alguem pode me ajudar no JSFL?

Abraços

14 Respostas

Hebert_Coelho

É JSF e não JSFL.

Você está enviando qual valor para numero?

raffamz

Eita Hebert… é serio que vai percorrer o texto todo e ver se tem algum erro de português também?
Segundo post, e ao invés de me ajudar, manda um link de seu próprio blog e fala de um outro “erro”…poderia me ajudar no problema que estou falando?

O valor que estou enviando para número é o número do telefone, um integer. OK? Peço a gentileza de me ajudar neste erro e desconsidere os erros de portuga.

Abraço

Hebert_Coelho

raffamz:
Eita Hebert… é serio que vai percorrer o texto todo e ver se tem algum erro de português também?
Segundo post, e ao invés de me ajudar, manda um link de seu próprio blog e fala de um outro “erro”…poderia me ajudar no problema que estou falando?

O valor que estou enviando para número é o número do telefone, um integer. OK? Peço a gentileza de me ajudar neste erro e desconsidere os erros de portuga.

Abraço

Que link? C ta falando de que?
Bem, se tu quer ofender fique a vontade. Boa sorte.

raffamz

Ofendi não bonitão! Entendeu desta forma? Que pena!
Este fórum é para ajuda,certo? Então, sim, preciso de ajuda!
Percebi que não tem como me ajudar! Então, nem sei porque entrou aqui… …francamente!

Abraço

Marcelo_de_Andrade

Tenha o mínimo de educação e bom senso, raffamz. Ele não corrigiu nenhum erro gramatical da nossa língua, e sim o nome correto da tecnologia utilizada. Você quer a resposta pronta? Foi o que percebi com você dizendo que em outro post o Herbert te passou um link para você visualizar. Se você não ajudar, não ajudaremos.

E agora responda: Qual valor está passando ?

raffamz

Marcelo, estou tendo educação! Desculpe se não pode perceber! Se visualizar meus outros post’s vai ver que não procuro respostas prontas. Desculpe novamente!
O que recebi no link que disse foi sim, uma resposta mal criada, mas enfim…deixarei isso de lado, pois acredita que o povo que sabe não pode ser arrogante, então relevo o amigão ae…já até mandei IM para ele. Então fica de boa, que não tem nada a ver com educação. Peço a gentileza de deixar isso de lado entre eu e o amigo.

O valor que está sendo passado é um integer, recuperado pela index, que seria o número do telefone.

Abraço

Marcelo_de_Andrade

Faça o seguinte, ao invés de tentar passar o int passe uma string. Provavelmente o teu campo está esperando uma String e está disparando o erro.

raffamz

Então Marcelão,

Já fiz isso, mas não funfa…Coloquei o atributo numero da minha classe modelo tipado como String…

d34d_d3v1l

rapaz. Kd o converter ???
vc não criou!
use um converter no teu input que vai funcionar.

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;


@FacesConverter(value="numberConverter")
public class NumberConverter implements Converter{

	@Override
	public Object getAsObject(FacesContext context, UIComponent component,
			String value) {
		if(value == null || value.isEmpty()){
			throw new ConverterException("erro double vazio/nulo");
		}

		value = value.replaceAll(",", ".");
		Double dValue = 0.0;

		try{
			dValue = Double.valueOf(value);
		}catch(Exception e){
			throw new ConverterException("erro double parse");
		}
		
		return dValue;
	}

	@Override
	public String getAsString(FacesContext context, UIComponent component,
			Object value) {
		return value == null? "" : value.toString();
	}

}
raffamz

Mas d34d_d3v1l !
Isso só acontece quando navego na EL do JSF do Pessoa para o telefone…
Onde eu colocaria esta classe? agora fiquei confuso!rs
me ajuda?

d34d_d3v1l

raffamz:
Mas d34d_d3v1l !
Isso só acontece quando navego na EL do JSF do Pessoa para o telefone…
Onde eu colocaria esta classe? agora fiquei confuso!rs
me ajuda?

kd o backing bean ae?
abraços

raffamz

Cara, to boiando! O que seria isso?
Abraço

Marcelo_de_Andrade

Seria teu Managed Bean. Quem é ele?

raffamz

Meu managebeans é o PessoaBean:

package com.souza.mb;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import com.souza.dao.DAO;
import com.souza.modelo.Endereco;
import com.souza.modelo.Pessoa;
import com.souza.modelo.Telefone;

@ViewScoped
@ManagedBean
public class PessoaBean {

	private Pessoa pessoa = new Pessoa();
	private Telefone telefone = new Telefone();
	private Endereco endereco = new Endereco();
	private List<Pessoa> pessoas;
	private List<Telefone> telefones;

	public Pessoa getPessoa() {
		return pessoa;
	}

	public Telefone getTelefone() {
		return telefone;
	}

	public Endereco getEndereco() {
		return endereco;
	}

	public void grava() {
		DAO<Pessoa> dao = new DAO<Pessoa>(Pessoa.class);
		DAO<Telefone> daoT = new DAO<Telefone>(Telefone.class);
		DAO<Endereco> daoE = new DAO<Endereco>(Endereco.class);
		
		if(pessoa.getId()==null){
		dao.adiciona(pessoa);
		daoE.adiciona(endereco);
		daoT.adiciona(telefone);
		}else{
			dao.atualiza(pessoa);
			daoE.atualiza(endereco);
			daoT.atualiza(telefone);
		}
		this.pessoa = new Pessoa();
		this.endereco = new Endereco();
		this.telefone = new Telefone();

		this.pessoas = dao.listaTodos();
		this.telefones = daoT.listaTodos();

	}

	public List<Pessoa> getPessoas() {
		if (pessoas == null) {
			System.out.println("Carregando dados...");
			pessoas = new DAO<Pessoa>(Pessoa.class).listaTodos();
		/*	telefones= new DAO<Telefone>(Telefone.class).listaTodos();
			getTelefones();*/
				}
		return pessoas;
	}

	public List<Telefone> getTelefones() {
		if (telefones == null) {
			System.out.println("Carregando telefones...");
			telefones = new DAO<Telefone>(Telefone.class).listaTodos();
		}
		return telefones;
	}

	public void remove(Pessoa pessoa) {
		DAO<Pessoa> dao = new DAO<Pessoa>(Pessoa.class);
		dao.remove(pessoa);
		this.pessoas = dao.listaTodos();
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}

	public void setTelefone(Telefone telefone) {
		this.telefone = telefone;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

}
Criado 24 de novembro de 2012
Ultima resposta 26 de nov. de 2012
Respostas 14
Participantes 4