1
resposta

Select Itens com erro

Olá, bom dia!

Tenho uma classe (que não é uma entity) que foi criada para uso específico de uma página que precisa somente das duas informações que essa classe contem. Classe:

public class IdResumoSaldoCartao {
    private Long idResumoSaldoCartao;
    private String nmDescricao;


    public IdResumoSaldoCartao(Long idResumoSaldoCartao, String nmDescricao) {
        this.idResumoSaldoCartao = idResumoSaldoCartao;
        this.nmDescricao = nmDescricao;
    }

    public IdResumoSaldoCartao() {

    }

    public Long getIdResumoSaldoCartao() {
        return idResumoSaldoCartao;
    }

    public void setIdResumoSaldoCartao(Long idResumoSaldoCartao) {
        this.idResumoSaldoCartao = idResumoSaldoCartao;
    }

    public String getNmDescricao() {
        return nmDescricao;
    }

    public void setNmDescricao(String cdMesRef) {
        this.nmDescricao = cdMesRef.substring(4) + "/" + cdMesRef.substring(0, 4);
    }

    @Override
    public String toString() {
        return this.nmDescricao + " - " + this.idResumoSaldoCartao.toString();
    }
}

Porém, ao tentar usar um selectOneMenu + selectItens iterando sobre essa lista (que tem conteúdo e o conteúdo está correto), apesar de não estourar nenhuma exception nem do primefaces nem do próprio java, meu diálogo não carrega, na verdade a função do back bean não chega nem a ser executada. Back Bean:

public void exibirExtrato() {
        dtFim = dtHoje;
        Calendar cal = Calendar.getInstance();
        cal.setTime(dtFim);
        cal.add(Calendar.MONTH, -1);
        int max = cal.getActualMaximum(Calendar.DATE);
        if (cal.get(Calendar.DATE) > max) {
            cal.set(Calendar.DATE, max);
        }
        dtIni = cal.getTime();
        if (cartao.getCartaoProdutos().get(0).getProduto().getSgModalidade().equals("M")) {
            final CadCartaoMBean mbean = this;
            acaoPosterior = new Runnable() {
                @Override
                public void run() {
                    mbean.carregarExtrato();
                }
            };
            Util.showDialog("dlgSelecionarCarteira");
        } else {
            idSelecionado = lstIdResumoSaldoCartao.get(1);
            carregarExtrato();
        }
    }

    public void carregarExtrato() {
        if (getIsCarteiraCredito()) {
            if (idSelecionado.getNmDescricao() != "Lançamentos Futuros" && idSelecionado.getNmDescricao() != "Mês Corrente")
                extrato = new VwExtratoCartaoImpl().gerarIdResumoSaldoCartao(cartao, null, false, idSelecionado.getIdResumoSaldoCartao());
            else if (idSelecionado.getNmDescricao() == "Mês Corrente")                 
                extrato = new VwExtratoCartaoImpl().gerarIdResumoSaldoCartao(cartao, dtHoje, false, 0L);
            else 
                extrato = new VwExtratoCartaoImpl().gerarIdResumoSaldoCartao(cartao, dtHoje, true, 0L);
        } else {
            if (dtIni == null || dtFim == null) {
                util.aviso("Preencha as datas para busca.");
                return;
            }
            if (dtFim.after(dtHoje)) {
                util.aviso("A data final não deve ser posterior a hoje!");
                return;
            }
            if (dtFim.before(dtIni)) {
                util.aviso("A data final não deve ser anterior à data inicial!");
                return;
            }
            extrato = new VwExtratoCartaoImpl().gerar(this.cartao, dtIni, dtFim, cdCarteiraSelecionada);
        }        
        atualizaTela();
        Util.showDialog("dlgExtrato");
    }

XHT ML:

<p:column rendered="#{cadCartaoMBean.isCarteiraCredito}">
                                <p:outputLabel for="mesRef" value="Mes de Referência:" />
                                <p:selectOneMenu id="mesRef" value="#{cadCartaoMBean.idSelecionado}"
                                    converter="converterIdResumoSaldoCartao" filterMatchMode="contains">
                                    <p:ajax event="change" action="#{cadCartaoMBean.carregarExtrato}"
                                    update="@form" />
                                    <f:selectItems value="#{cadCartaoMBean.lstIdResumoSaldoCartao}" var="l"
                                        itemValue="#{l}" itemLabel="#{l}" />
                                </p:selectOneMenu>
                            </p:column> 

Pontos de atenção:

  • Todas as outras funções estão funcionando corretamente, inclusive o conversor.
  • Se eu troco a lista da classe que criei por qualquer outra lista de qualquer outra classe, funciona sem problemas.
1 resposta

Oi Carol

Em qual curso você teve esse problema? Vou dar uma olhada pra tentar te ajudar

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software