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.