[Resolvido] Select (ou ComboBox) PrimeFaces some ao ser carregado via ajax

2 respostas
flaviochess

Bom dia pessoal!

Estou tendo um problema que talvez seja simples, mas não sei como resolve-lo…

Estou criando um sistema de gerenciamento de alunos. Quando se entra com a identificação do aluno, carrega o nome dele e as matrículas (que seria cada ano que ele estudou) via ajax.
Ao digitar a identificação do aluno o carrega o nome no inputText e carrega no list as matrículas (verifiquei debugando), mas o componente select some :shock: !

Minha página:

<p:panel header="Aluno">
                          <h:panelGrid id="gridAluno" columns="4">
                                <h:outputLabel for="rm" value="RM: *" />
                                <p:inputText id="rm" value="#{notaController.aluno.rm}" size="12" >
                                    <p:ajax event="keyup" update="nome,selectMatricula" listener="#{notaController.buscaAluno}" />
                                </p:inputText>
                                
                                <h:outputLabel for="nome" value="Nome: *" />
                                <p:inputText id="nome" value="#{notaController.aluno.nome}" size="40" disabled="true"/>
                                
                                <h:outputLabel for="status" value="Status:" />
                                <p:selectOneMenu value="#{notaController.nota.matricula}" converter="converter" id="selectMatricula">
                                    <f:selectItem itemLabel="Selecione..." itemValue="" />
                                    <f:selectItems value="#{notaController.matriculas}"/>
                                </p:selectOneMenu>
                            </h:panelGrid>
                    </p:panel>

Meu managerBean:

public class NotaController {
    
    private Aluno aluno;
    private List<Matricula> matriculas;
    private Nota nota;

    public NotaController() {
        aluno = new Aluno();
        matriculas = new ArrayList<Matricula>(1);
        nota = new Nota();
    }

    ...
    
    public void buscaAluno(){
        Aluno alunoBusca = AlunoController.findByRm(this.aluno.getRm());
        if(alunoBusca != null){
            this.aluno = alunoBusca;
            carregaMatriculas(this.aluno.getId());
        }else{
            Aluno novoAluno = new Aluno();
            novoAluno.setRm(aluno.getRm());
            this.aluno = novoAluno;
            this.matriculas = new ArrayList<Matricula>(1);
        }
    }
    
    public void carregaMatriculas(int idAluno){
        matriculas = MatriculaController.getMatriculasByAluno(idAluno);
    }
    ...
}

Antes de entrar com o valor:

Depois:

Na segunda imagem é possível ver o resultado do select, ele some e fica apenas um traço…
alguém saberia como resolver o meu problema ou o que fiz de errado?
Obrigado!

2 Respostas

flaviochess

Pessoal,
problema resolvido!!

Para carregar o select fiz um converter genérico, e não implementei a interface necessária no objeto Matrícula.

juniorsatanas

posta o código aqui para ajudar !

Criado 12 de fevereiro de 2012
Ultima resposta 7 de out. de 2012
Respostas 2
Participantes 2