Boa tarde a todos, estou desenvolvendo um sistema Web com EJB3.1, JSF2.0, primifaces 3.4.
Para resumir , meu erro está no selectOneMenu do primifaces, na hora de fazer o insert aparece o seguinte erro(Erro de conversão ao definir o valor ‘30’ para ‘null Converter’. )
Minhas entidades já estão com hachcode() e equals().
Já estou no meu limite, alguem pode me ajudar? Deus abençoe
(Meu Converter)
[code]package br.com.startup.s3.util;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItems;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.SelectItem;
@FacesConverter(value = “contatoConverter”)
public class ContatoConverter implements Converter{
private int index;
public Object getAsObject(FacesContext facesContext, UIComponent uicomp, String value) {
List<SelectItem> items = new ArrayList<SelectItem>();
List<UIComponent> uicompList = uicomp.getChildren();
for(UIComponent comp: uicompList){
if(comp instanceof UISelectItems){
items.addAll((List<SelectItem>) ((UISelectItems)comp).getValue());
}
}
return "-1".equals(value) ? null : items.get(Integer.valueOf(value)).getValue();
}
public String getAsString(FacesContext facesContext, UIComponent uicomp, Object entity) {
return entity == null ? "-1" : String.valueOf(index++);
}
}
(Meu SelectOneMenu)
<h:outputText value="Clientes: " />
<p:selectOneMenu value="#{contatoBean.contato.cliente}" effect="fade" converter="#{contatoConverter}">
<f:selectItem itemLabel="-Escolha-" itemValue="#" />
<f:selectItems value="#{contatoBean.clientes}" var="contato" itemLabel="#{contato.nome}" itemValue="#{contato.idCliente}"/>
</p:selectOneMenu>
(Meu Managed Bean)
package br.com.startup.s3.controller;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import br.com.startup.s3.ejb.ClienteFacadeBean;
import br.com.startup.s3.ejb.ContatoFacadeBean;
import br.com.startup.s3.entidade.Cliente;
import br.com.startup.s3.entidade.Contato;
import br.com.startup.s3.ex.StartupException;
@ManagedBean(name=“contatoBean”)
@SessionScoped
public class ContatoBean {
@EJB
private ContatoFacadeBean contatoFacade;
@EJB
private ClienteFacadeBean clienteFacade;
private Contato contato;
private Cliente cliente;
private List<Contato>contatos;
private List<Cliente>clientes;
public ContatoBean() {
contato = new Contato();
}
//Inserir
public void prepararInserir(){
contato = new Contato();
}
public void prepararAtualizar(Integer id) throws StartupException{
contato = contatoFacade.buscarContatoPelaChave(id);
}
public void inserir() throws StartupException{
contatoFacade.inserirContato(contato);
//Mensagem Growl
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("contato cadastrado com sucesso! "));
contato = new Contato();
}
public void atualizar() throws StartupException{
contatoFacade.alterarContato(contato);
//Mensagem Growl
FacesContext context = FacesContext.getCurrentInstance();
context.addMessage(null, new FacesMessage("contato atualizado com sucesso! "));
contato = new Contato();
}
public void deletar() throws StartupException{
FacesContext context = FacesContext.getCurrentInstance();
boolean resultado = contatoFacade.removerContato(contato);
if (resultado) {
contato = new Contato();
context.addMessage(null, new FacesMessage("contato removido com sucesso!"));
} else {
context.addMessage(null, new FacesMessage("Falha ao remover contato!"));
}
}
/////GET e Set
public ContatoFacadeBean getContatoFacade() {
return contatoFacade;
}
public void setContatoFacade(ContatoFacadeBean contatoFacade) {
this.contatoFacade = contatoFacade;
}
public Contato getContato() {
return contato;
}
public void setContato(Contato contato) {
this.contato = contato;
}
public List<Contato> getContatos() throws StartupException {
contatos = contatoFacade.buscarTodosContato();
return contatos;
}
//////////////////////////////////Clientes
public ClienteFacadeBean getClienteFacade() {
return clienteFacade;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public void setClienteFacade(ClienteFacadeBean clienteFacade) {
this.clienteFacade = clienteFacade;
}
public List<Cliente> getClientes() throws StartupException {
clientes = clienteFacade.buscarTodosClientes();
return clientes;
}
public void setClientes(List<Cliente> clientes) {
this.clientes = clientes;
}
}
[/code]