bom…dei uma lida por ae… ae dizem que se tiver o converter funcionando direitinho…
se na lista apresentada do selectonemenu, conter o valor que esta no “value” … o
selectonemenu aparece o valor do value selecionado…
entao quiz fazer o converter… logo vou cola as classes…
editaCidade.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="pt-br" xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
</h:head>
<h:body>
<div id="Conteudo">
<h:panelGrid>
<h:column>
<h:form>
<h:column>
<p:dataTable align="center" rows="15" styleClass="centro"
value="#{mbCidade.listaCidade}" var="list" id="tabelaPesCidade"
width="580px">
<p:column id="colNomeEstado" filterBy="#{list.estado.nome}"
filterEvent="onkeyup" label="Estado">
<f:facet name="header">
<h:outputText value="Estado" id="lblColNomeArea" />
</f:facet>
<h:outputText value="#{list.estado.nome}" id="txtColNomeEstado" />
</p:column>
<p:column id="colNome" filterBy="#{list.nome}"
filterEvent="onkeyup" label="nome">
<f:facet name="header">
<h:outputText value="Nome" id="lblColNome" />
</f:facet>
<h:outputText value="#{list.nome}" id="lblValorColNome" />
</p:column>
<p:column id="colDetalhe" label="detalhe">
<f:facet name="header">
<h:outputText value="Detalhes" id="lblColDetalhe" />
</f:facet>
<h:inputHidden value="#{list.id}" binding="#{mbCidade.idTabela}"></h:inputHidden>
<p:commandButton value="Detalhes" ajax="false"
actionListener="#{mbCidade.atualizaCampos}"></p:commandButton>
</p:column>
<p:column id="colDelete" label="Deletar">
<f:facet name="header">
<h:outputText value="Deletar" id="lblColDelete" />
</f:facet>
<h:inputHidden value="#{list.id}" binding="#{mbCidade.idTabela}"></h:inputHidden>
<p:commandButton value="Deletar" ajax="false"
actionListener="#{mbCidade.Deletar}" />
</p:column>
</p:dataTable>
</h:column>
<br />
<br />
<br />
<p:fieldset legend="Cidade">
<h:panelGrid id="pgEstoqueCategoria" columns="2">
<h:outputText value="Estado:"></h:outputText>
<p:selectOneMenu id="dropEstado"
value="#{mbCidade.estado}"
converter="converteGrupoProduto">
<f:selectItems value="#{mbEstado.listaEstado}" var="a"
itemLabel="#{a.nome}" itemValue="#{a}" />
</p:selectOneMenu>
<h:outputText value="Cidade:"></h:outputText>
<h:inputText id="inputCidadeNome" value="#{mbCidade.cidade.nome}" />
<h:column></h:column>
<p:commandButton value="Salvar" ajax="true"
action="#{mbCidade.Editar}" update="tabelaPesCidade" />
</h:panelGrid>
</p:fieldset>
</h:form>
<!-- FIM FORM -->
</h:column>
<!-- FIM COLUNA GERAL -->
</h:panelGrid>
<!-- FIM PAINEL GERAL -->
</div>
</h:body>
</html>
convert ( a principio so alterei algumas coisas do seu)
package br.com.Decom.Util;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import br.com.Decom.DAO.DAO;
import br.com.Decom.Model.Estado;
@FacesConverter(value = "converteGrupoProduto", forClass = Estado.class)
public class ConverteGrupoProduto implements Converter {
DAO<Estado> dao = new DAO<Estado>(Estado.class);
Estado estado = new Estado();
@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
try {
estado = dao.busca(arg2);
if(!arg2.isEmpty())
System.out.println("AAA TESTE AAA : " + estado.getSigla() );
return estado;
} catch (NumberFormatException e) {
return new Estado();
}
}
@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
try {
return String.valueOf(((Estado) arg2).getId());
} catch (Exception e) {
return "";
}
}
}
mbCidade.java (meu controller)
package br.com.Decom.ManergerBeam;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlInputHidden;
import br.com.Decom.DAO.DAO;
import br.com.Decom.Model.Cidade;
import br.com.Decom.Model.Estado;
@ManagedBean
@SessionScoped
public class mbCidade {
DAO<Estado> daoEstado = new DAO<Estado>(Estado.class);
DAO<Cidade> daoCidade = new DAO<Cidade>(Cidade.class);
HtmlInputHidden idTabela = new HtmlInputHidden();
List<Cidade> listaCidade = new ArrayList<Cidade>();
Cidade cidade = new Cidade();
Estado estado = new Estado();
Long idEstado;
public mbCidade() {
// TODO Auto-generated constructor stub
listaCidade = daoCidade.buscaLista();
attLista();
}
public String Salvar() {
//System.out.println("Estado Selecionado: " + estado.getNome());
//estado = daoEstado.busca(idEstado);
cidade.setEstado(estado);
cidade.setStatus(true);
//daoCidade.salva(cidade);
daoCidade = new DAO<Cidade>(Cidade.class);
cidade = new Cidade();
estado = new Estado();
attLista();
return "ok";
}
public String Editar() {
estado = daoEstado.busca(idEstado);
cidade.setEstado(estado);
daoCidade.salva(cidade);
daoCidade = new DAO<Cidade>(Cidade.class);
cidade = new Cidade();
estado = new Estado();
attLista();
return "ok";
}
public String Deletar() {
atualizaCampos();
cidade.setStatus(false);
daoCidade.salva(cidade);
daoCidade = new DAO<Cidade>(Cidade.class);
cidade = new Cidade();
attLista();
return "ok";
}
public String atualizaCampos() {
cidade = daoCidade.busca(idTabela.getValue().toString());
estado = cidade.getEstado();
System.out.println("Estado: " + estado.getNome());
return "ok";
}
public HtmlInputHidden getIdTabela() {
return idTabela;
}
public void setIdTabela(HtmlInputHidden idTabela) {
this.idTabela = idTabela;
}
public List<Cidade> getListaCidade() {
return listaCidade;
}
public void setListaCidade(List<Cidade> listaCidade) {
this.listaCidade = listaCidade;
}
public void attLista() {
listaCidade = daoCidade.buscaLista();
}
public Long getIdEstado() {
return idEstado;
}
public void setIdEstado(Long idEstado) {
this.idEstado = idEstado;
}
public Cidade getCidade() {
return cidade;
}
public void setCidade(Cidade cidade) {
this.cidade = cidade;
}
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public void attComboCidade() {
if (idEstado > 0) {
daoEstado = new DAO<Estado>(Estado.class);
listaCidade = new ArrayList<Cidade>();
estado = daoEstado.busca(idEstado);
listaCidade = estado.getCidades();
}
}
}
o erro que apresenta
Informações: Server startup in 7894 ms
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
AAA TESTE AAA : RO
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]
Set 18, 2012 1:17:33 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages
Informações: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt11:j_idt20:dropEstado[severity=(ERROR 2), summary=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido), detail=(j_idt11:j_idt20:dropEstado: Erro de validação: o valor não é válido)]