[RESOLVIDO] Problemas com ManagedBean JSF 2

Olá pessoal, estou desenvolvendo um sistema (estou inciando em jsf2 + primefaces), e na parte de cadastro de associados está acontecendo uma coisa muito estranha…

Tenho uma pagina “associado.xhtml” nela tenho um dialog que faz a pesquisa no banco de dados, até ai tudo bem, os dados aparecem corretamente.
Então quando o usuário clica no registro o dialog some e os dados vão para o form preenchido, entao quando isso acontece os dados não vem por completo nos campos, mas se eu fizer uma segunda pesquisa e clicar novamente ai sim os dados vem por completo, vou postar os codigos para vocês analisarem

AssociadoBean

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

package plafama.controller;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import org.primefaces.event.SelectEvent;
import plafama.model.Vendedor;
import plafama.model.Associado;
import plafama.dao.AssociadoDAO;
import plafama.dao.DependenteDAO;
import plafama.model.Usuario;
import plafama.model.Dependente;
import plafama.model.Plano;
import plafama.model.TabelaPreco;


/**
 *
 * @author Nielson
 */
@ManagedBean
@ViewScoped
public class AssociadoBean implements java.io.Serializable {

    private Usuario usuario;
    private Dependente dependente = new Dependente();
    private List<Associado> associados;
    private AssociadoDAO associadoDAO = new AssociadoDAO();
    private DependenteDAO dependenteDAO = new DependenteDAO();
    private Vendedor vendedor = new Vendedor();
    private Plano plano = new Plano();
    private TabelaPreco tabelaPreco = new TabelaPreco();
    private Associado associado;
    private String keyword;
    private String filter;

    public AssociadoBean() {
        HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
        HttpSession session = request.getSession();
        usuario = (Usuario)session.getAttribute("usuario");
        associados = null;
        vendedor = new Vendedor();
        associado = new Associado();
        tabelaPreco = new TabelaPreco();
        plano = new Plano();
        associadoDAO.clear();
    }

    public void novo(){
        vendedor = new Vendedor();
        tabelaPreco = new TabelaPreco();
        plano = new Plano();
        associado = new Associado();
        associadoDAO.clear();
    }

    public void salvar(){
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            associadoDAO.clear();
            if (associado.getCodigo() == 0){
                associado.setCodigo(associadoDAO.geraCodigo(String.valueOf(vendedor.getCodigo())));
            }
            associado.setVendedor(vendedor);
            associado.setPlano(plano);
            associado.setTabelaPreco(tabelaPreco);
            associado = associadoDAO.saveOrUpdate(associado);
            context.addMessage(null, new FacesMessage("Infomarção", "Registro salvo com sucesso!"));
        }
        catch (Exception e){
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", e.getMessage()));
        }
    }

    public void excluir(){
        FacesContext context = FacesContext.getCurrentInstance();
        try {
            associadoDAO.delete(associado);
            novo();
            associados = null;
            context.addMessage(null, new FacesMessage("Infomarção", "Excluído com sucesso!"));
        }
        catch (Exception e){
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro:", e.getMessage()));
        }
    }

    public void searchAssociados(){
        associados = null;
        associadoDAO.clear();
        associados = associadoDAO.find(usuario,keyword, filter);
        //System.out.println(associados.size());
    }

    public void clear(){
        associadoDAO.clear();
    }

    public void onRowSelect(SelectEvent event){
        associadoDAO.clear();
        associado = (Associado)event.getObject();
        associado = associadoDAO.get(associado.getCodigo());
        setVendedor(associado.getVendedor());
        setPlano(associado.getPlano());
        setTabelaPreco(associado.getTabelaPreco());
    }

    public List<Dependente> getListaDependentes(){
        return dependenteDAO.getDependentes(associado);
    }
    public Associado getAssociado() {
        return associado;
    }

    public void setAssociado(Associado associado) {
        this.associado = associado;
    }

    public List<Associado> getAssociados() {
        return associados;
    }

    public String getFilter() {
        return filter;
    }

    public void setFilter(String filter) {
        this.filter = filter;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public Vendedor getVendedor() {
        return vendedor;
    }

    public void setVendedor(Vendedor vendedor) {
        this.vendedor = vendedor;
    }

    public Dependente getDependente() {
        return dependente;
    }

    public void setDependente(Dependente dependente) {
        this.dependente = dependente;
    }

    public Plano getPlano() {
        return plano;
    }

    public void setPlano(Plano plano) {
        this.plano = plano;
    }

    public TabelaPreco getTabelaPreco() {
        return tabelaPreco;
    }

    public void setTabelaPreco(TabelaPreco tabelaPreco) {
        this.tabelaPreco = tabelaPreco;
    }
}

associado.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
    <p:panel header="Associado" closable="true" id="panelAssociado">
        <p:messages id="msgs" showDetail="true"/>
        <h:form prependId="false">
            <p:commandButton value="Novo" image="ui-icon-document" actionListener="#{associadoBean.novo}" update="panelAssociado"/>
            <p:commandButton value="Salvar" image="ui-icon-disk" actionListener="#{associadoBean.salvar}" update="panelAssociado"/>
            <p:commandButton value="Excluir" image="ui-icon-trash" onclick="confirmation.show()"/>
            <p:commandButton value="Localizar" image="ui-icon-search" onclick="dlg.show()" update="result"/>
            <p:confirmDialog message="Deseja Realmente excluir registro?"
                 showEffect="bounce" hideEffect="clip"
                 header="Excluir" severity="alert" widgetVar="confirmation">
                <p:commandButton value="Não" onclick="confirmation.hide()" type="button" />
                <p:commandButton value="Sim" update="panelAssociado" oncomplete="confirmation.hide()"
                                 actionListener="#{associadoBean.excluir}" />
            </p:confirmDialog>
            <h3>Dados Pessoais</h3>
            <h:panelGrid columns="6">
                <h:outputLabel value="Código:"/>
                <h:outputLabel value="CPF:"/>
                <h:outputLabel value="Nome:"/>
                <h:outputLabel value="Data de Nascimento"/>
                <h:outputLabel value="Sexo"/>
                <h:outputLabel value="Estado Cívil:"/>
                <p:inputText id="codigo" size="10" value="#{associadoBean.associado.codigo}" disabled="true"/>
                <p:inputMask id="cpf" size="14" value="#{associadoBean.associado.cpf}" mask="999.999.999-99" required="true" requiredMessage="Digite o CPF">
                     <f:converter converterId="plafama.util.NumberConverter"/>
                </p:inputMask>
                <p:inputText id="nome" size="70" style="text-transform:uppercase" value="#{associadoBean.associado.nome}" autocomplete="false" required="true" requiredMessage="Digite o Nome">
                    <f:converter converterId="plafama.util.UppercaseConverter"/>
                </p:inputText>
                <p:inputMask id="nascimento" size="11" mask="99/99/9999" value="#{associadoBean.associado.dataNascimento}" immediate="true">
                    <f:convertDateTime dateStyle="short" locale="pt-BR" pattern="dd/MM/yyyy"/>
                </p:inputMask>
                <h:selectOneMenu id="sexo" value="#{associadoBean.associado.sexo}">
                    <f:selectItem itemLabel="M" itemValue="M"/>
                    <f:selectItem itemLabel="F" itemValue="F"/>
                </h:selectOneMenu>
                <h:selectOneMenu id="estadoCivil" value="#{associadoBean.associado.estadoCivil}">
                    <f:selectItem itemLabel="CASADO(A)" itemValue="CASADO(A)"/>
                    <f:selectItem itemLabel="SOLTEIRO(A)" itemValue="SOLTEIRO(A)"/>
                    <f:selectItem itemLabel="DIVORCIADO(A)" itemValue="DIVORCIADO(A)"/>
                    <f:selectItem itemLabel="VIUVO(A)" itemValue="VIUVO(A)"/>
                    <f:selectItem itemLabel="OUTROS(A)" itemValue="OUTROS(A)"/>
                </h:selectOneMenu>
        </h:panelGrid>
        </h:form>
        <p:dialog header="Localizar..." widgetVar="dlg" resizable="false" width="900" height="350" showEffect="clip" hideEffect="clip">
	<h:form prependId="false">
            <h:panelGrid columns="3">
                <h:outputLabel value="Consultar por:"/>
                <h:outputLabel value="Filtro"/>
                <h:outputLabel value=""/>
                <p:inputText id="keyword" size="60" style="text-transform:uppercase" value="#{associadoBean.keyword}" autocomplete="false">
                    <f:converter converterId="plafama.util.UppercaseConverter"/>
                </p:inputText>
                <h:selectOneMenu id="filter" value="#{associadoBean.filter}">
                    <f:selectItem itemLabel="Nome" itemValue="nome"/>
                    <f:selectItem itemLabel="Código" itemValue="codigo"/>
                    <f:selectItem itemLabel="Bairro" itemValue="bairro"/>
                    <f:selectItem itemLabel="Cidade" itemValue="cidade"/>
                    <f:selectItem itemLabel="Vendedor" itemValue="vendedor"/>
                    <f:selectItem itemLabel="Plano" itemValue="plano"/>
                </h:selectOneMenu>
                <p:commandButton value="Buscar" image="ui-icon ui-icon-search" update="result" actionListener="#{associadoBean.searchAssociados}" ajax="true"/>
            </h:panelGrid>
            <p:dataTable id="result" var="assoc" value="#{associadoBean.associados}" selection="#{associadoBean.associado}" rowSelectListener="#{associadoBean.onRowSelect}" onRowSelectComplete="dlg.hide();" selectionMode="single" update="panelAssociado" emptyMessage="Nenhum registro encontrado">
                <p:column>
                    <f:facet name="header">Código</f:facet>
                    #{assoc.codigo}
                </p:column>
                <p:column>
                    <f:facet name="header">Nome</f:facet>
                    #{assoc.nome}
                </p:column>
                <p:column>
                    <f:facet name="header">CPF</f:facet>
                    #{assoc.cpf}
                </p:column>
                <p:column>
                    <f:facet name="header">Telefone</f:facet>
                    #{assoc.foneResidencial}
                </p:column>
                <p:column>
                    <f:facet name="header">Celular</f:facet>
                    #{assoc.celular}
                </p:column>
                <p:column>
                    <f:facet name="header">Vendedor</f:facet>
                    #{assoc.vendedor.nome}
                </p:column>
                <p:column>
                    <f:facet name="header">Plano</f:facet>
                    #{assoc.plano.descricao}
                </p:column>
            </p:dataTable>
        </h:form>
    </p:dialog>
    </p:panel>
</ui:composition>

Alguém já passou por esse tipo problema?

Amigo nunca tive esse problema mas te aconselho a olhar o log do servidor(TomCat, Glassfish, etc…) pra ver o q ele diz…blz?

O pior é isso o servidor TomCat 6 não dá nenhuma mensagem de erro, ta tudo normal do Log, isso q me intriga mais… notei que quando ele chega no combox ele não altera os valores da primeira vez, somente na segunda vez os valores do selectOne mudam

Resolvi, o problema é era a tag <h:form>, separei os butoes em form e os campos em outro form e a busca em outro form, aí resolveu!
se alguem tiver esse tipo de problema taí a solução…