Fala Galera,
tenho 2 selectonmenu, e fiz 2 converter para eles para que eu possa salvar na entidade tiposervico, so que está ocorrendo o erro
Erro de validação: o valor não é válido
No meu log aparece
Advertência: JSF1063: AVISO! Definindo valor de atributo não serializável em HttpSession (chave: tipoServicoController, classe do valor: Controller.TipoServicoController).
Ago 10, 2012 9:05:18 PM com.sun.faces.context.SessionMap put
Advertência: JSF1063: AVISO! Definindo valor de atributo não serializável em HttpSession (chave: servicoPrestadoController, classe do valor: Controller.ServicoPrestadoController).
Segue minhas classes:
gerenciartipoServico<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Cadastro serviços prestados</title>
</head>
<body>
<h1>Cadastro serviços prestados</h1>
<hr />
<h:form>
<h:messages />
<h:panelGrid columns="2">
<h:outputLabel value="Cliente: " />
<h:selectOneMenu value="#{servicoPrestadoController.servicoPrestado.id_cliente}">
<f:selectItems value="#{servicoPrestadoController.clientes}"
var="x"
itemValue="#{x.value}"
itemLabel="#{x.description}" />
<f:converter converterId="ClienteConverter"/>
</h:selectOneMenu>
<h:outputLabel value="Tipo Serviço: " />
<h:selectOneMenu value="#{servicoPrestadoController.servicoPrestado.id_tipoServico}">
<f:selectItems value="#{servicoPrestadoController.tipoServicos}"
var="y"
itemValue="#{y.value}"
itemLabel="#{y.description}" />
<f:converter converterId="TipoServicoConverter"/>
</h:selectOneMenu>
<h:outputLabel value="Data: " />
<h:inputText value="#{servicoPrestadoController.servicoPrestado.data}" >
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:outputLabel value="Valor a pagar: " />
<h:inputText value="#{servicoPrestadoController.servicoPrestado.vlrPagar}" />
<h:outputLabel value="Valor pago: " />
<h:inputText value="#{servicoPrestadoController.servicoPrestado.vlrPago}" />
<h:outputLabel value="Quantidade de horas: " />
<h:inputText value="#{servicoPrestadoController.servicoPrestado.qtdHoras}" />
<h:commandButton action="#{servicoPrestadoController.adicionarServicoPrestado}" value="Salvar" />
<h:commandButton action="#{servicoPrestadoController.alterarServicoPrestado}" value="Alterar"/>
<h:outputLink value="index.jsf">Voltar</h:outputLink>
</h:panelGrid>
</h:form>
<hr />
</body>
</html>
ClienteController
package Controller;
import Dao.ClienteDao;
import Dao.ClienteDaoImp;
import Model.Cliente;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
/**
*
* @author Igor Souza
*/
@ManagedBean
@SessionScoped
public class ClienteController {
private Cliente cliente;
private DataModel listaClientes;
public DataModel getListarClientes() {
List<Cliente> lista = new ClienteDaoImp().list();
listaClientes = new ListDataModel(lista);
return listaClientes;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public String prepararAdicionarCliente() {
cliente = new Cliente();
return "gerenciarCliente";
}
public String prepararAlterarCliente() {
cliente = (Cliente) (listaClientes.getRowData());
return "gerenciarCliente";
}
public String excluirCliente() {
Cliente clienteTemp = (Cliente) (listaClientes.getRowData());
ClienteDao dao = new ClienteDaoImp();
dao.remove(clienteTemp);
return "index";
}
public String adicionarCliente(){
ClienteDao dao = new ClienteDaoImp();
dao.save(cliente);
return "index";
}
public String alterarCliente(){
ClienteDao dao = new ClienteDaoImp();
dao.update(cliente);
return "index";
}
}
ClienteConverter
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Controller;
import Dao.ClienteDao;
import Dao.ClienteDaoImp;
import Model.Cliente;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.SelectItem;
/**
*
* @author emanuel
*/
@FacesConverter(value="ClienteConverter", forClass=Cliente.class)
public class ClienteConverter implements Converter {
private static final long serialVersionUID = 1L;
public ClienteConverter() {
}
public Object getAsObject(FacesContext context, UIComponent component, String nome) {
if(nome != null && !nome.isEmpty()){
ClienteDao clienteDao = new ClienteDaoImp();
List<Cliente> clientes = clienteDao.list();
for (Cliente cli : clientes) {
if(cli.getNome().equals(nome)) {
return cli;
}
}
}
return null;
}
public String getAsString(FacesContext context, UIComponent component, Object obj) {
if (obj != null && obj instanceof Cliente){
long cl = ((Cliente) obj).getId();
String imp = String.valueOf(cl);
return imp;
}
return null;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Model;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
*
* @author Igor Souza
*/
@Entity
public class Cliente implements Serializable {
@Id
@GeneratedValue
private long id;
private String nome;
private String endereco;
private String bairro;
private String cidade;
private String uf;
private String cep;
private String telefone1;
private String telefone2;
public Cliente(){
}
public Cliente(long id, String nome, String endereco, String bairro, String cidade, String uf, String cep, String telefone1, String telefone2) {
this.id = id;
this.nome = nome;
this.endereco = endereco;
this.bairro = bairro;
this.cidade = cidade;
this.uf = uf;
this.cep = cep;
this.telefone1 = telefone1;
this.telefone2 = telefone2;
}
public Cliente(long id){
this.id = id;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCep() {
return cep;
}
public void setCep(String cep) {
this.cep = cep;
}
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 long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getTelefone1() {
return telefone1;
}
public void setTelefone1(String telefone1) {
this.telefone1 = telefone1;
}
public String getTelefone2() {
return telefone2;
}
public void setTelefone2(String telefone2) {
this.telefone2 = telefone2;
}
public String getUf() {
return uf;
}
public void setUf(String uf) {
this.uf = uf;
}
}
Vlw pessoal.