Objeto vem nulo - JSF e Primefaces

1 resposta
G
Fala galera, beleza? To com um problema que não consigo resolver, e é para meu TCC! É o seguinte: tenho uma tela onde tem um dataTable (uso Primefaces) que apresenta dados de escolas. Vejam:
<p:dataTable id="tabela"
                                 var="instituicoes"
                                 value="#{instituicaoMB.exibirTodasInstituicoes()}"
                                 emptyMessage="Nenhum registro encontrado"
                                 selectionMode="single"
                                 selection="#{instituicaoMB.instituicaoBeanAux}"
                                 rowKey="#{instituicoes.idInstituicao}"
                                 paginator="true"
                                 rows="6"
                                 paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} 
                                 {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
                        <p:ajax event="rowSelect" listener="#{instituicaoMB.linhaSelecionada}" />
//restante das colunas da tabela
Tenho também o ManagedBean que pega o valor da linha que eu selecionei:
@ManagedBean
@RequestScoped
public class InstituicaoMB {

private InstituicaoBean instituicaoBeanAux;

 public InstituicaoMB() {
this.instituicaoBeanAux = null;
}

public void linhaSelecionada(SelectEvent event) {
        setInstituicaoBeanAux((InstituicaoBean) event.getObject());
        System.out.println("Inst: " + this.getInstituicaoBeanAux());
    }
}
Tenho também conversores:
@FacesConverter(value = "conversorInstituicao", forClass = InstituicaoBean.class)
public class ConversorInstituicaoBean implements Converter {

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String valor) {
        Integer idInstituicao;
        
        if(valor == null || "".equals(valor)) {
            return null;
        }
        
        String[] id = valor.split(" ");
        idInstituicao = Integer.parseInt(id[1]);
               
        
        if(id[1] != null) {
            InstituicaoDAOImpl instituicaoDAOImpl = new InstituicaoDAOImpl();
            return instituicaoDAOImpl.buscarInstituicaoPorId(idInstituicao);
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object object) {
        if (object != null && object instanceof InstituicaoBean) {
            return ((InstituicaoBean)object).toString();
        }
        return null;
    }
    
}

Aí eu tenho um método chamado salvar() em que preciso passar a variável instituicaoBeanAux para persistência.
No entanto, ele não salva no banco porque a variável instituicaoBeanAux vem nula!!

Alguém pode me dizer o que está acontecendo? =/
Valeu galera, []'s

1 Resposta

F

Substitua o @RequestScoped pelo @ViewScoped e faça um teste, acho que é este seu problema…

Também de uma pesquisada nos scopes do JSF para entender melhor sobre os scopes, neste blog tem muita coisa interessante BalusC.

Criado 8 de maio de 2013
Ultima resposta 8 de mai. de 2013
Respostas 1
Participantes 2