Boa tarde galera estou com uma dúvida na tag <h:selectOneMenu tem vários itens buscados no banco de dados quero que toda vez que eu selecione alguma coisa la apareça no <h:outputText estou querendo criar um botao de pesquisa também que a partir do item selecionado pesquise todos os valores relacionados a este item selecionado. Segue abaixo o código da página
xhtml
<h:form id="edicao">
<h:panelGrid columns="5">
<h:selectOneMenu id="categoria" value="#{lancamentoBean.editado.categoria}">
<f:selectItems value="#{categoriaBean.categoriasSelect}"></f:selectItems>
</h:selectOneMenu>
<h:outputText value=""></h:outputText>
</h:panelGrid>
</h:form>
bean
package financeiro.lancamento;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import financeiro.categoria.Categoria;
import financeiro.cheque.Cheque;
import financeiro.cheque.ChequeId;
import financeiro.cheque.ChequeRN;
import financeiro.conta.Conta;
import financeiro.util.RNException;
import financeiro.web.ContextoBean;
import financeiro.web.util.ContextoUtil;
@ManagedBean(name="lancamentoBean")
@ViewScoped
public class LancamentoBean {
private List<Lancamento> lista;
private List<Double> saldos = new ArrayList<Double>();
private float saldoGeral;
private Lancamento editado = new Lancamento();
private List<Lancamento> listaAteHoje;
private List<Lancamento> listaFuturo;
private Integer numeroCheque;
private Categoria categoria = this.editado.getCategoria();
public LancamentoBean(){
this.novo();
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public void novo(){
this.editado= new Lancamento();
this.editado.setData(new Date(System.currentTimeMillis()));
this.numeroCheque = null;
}
public void editar(){
Cheque cheque = this.editado.getCheque();
if(cheque != null){
this.numeroCheque = cheque.getChequeId().getCheque();
}
}
public void salvar(){
ContextoBean contextoBean = ContextoUtil.getContextoBean();
this.editado.setUsuario(contextoBean.getUsuarioLogado());
this.editado.setConta(contextoBean.getContaAtiva());
ChequeRN chequeRN = new ChequeRN();
ChequeId chequeId = null;
if(this.numeroCheque != null){
chequeId = new ChequeId();
chequeId.setConta(contextoBean.getContaAtiva().getConta());
chequeId.setCheque(this.numeroCheque);
Cheque cheque = chequeRN.carregar(chequeId);
FacesContext context = FacesContext.getCurrentInstance();
if(cheque == null){
FacesMessage msg = new FacesMessage("Cheque não cadastrado.");
context.addMessage(null, msg);
return;
}else if(cheque.getSituacao() == Cheque.SITUACAO_CHEQUE_CANCELADO){
FacesMessage msg = new FacesMessage("Cheque já cancelado.");
context.addMessage(null, msg);
return;
}else{
this.editado.setCheque(cheque);
chequeRN.baixarCheque(chequeId, this.editado);
}
}
LancamentoRN lancamentoRN = new LancamentoRN();
lancamentoRN.salvar(this.editado);
this.novo();
this.lista = null;
}
public void excluir(){
LancamentoRN lancamentoRN = new LancamentoRN();
this.editado = lancamentoRN.carregar(this.editado.getLancamento());
lancamentoRN.excluir(this.editado);
this.lista = null;
}
public List<Lancamento> getLista(){
if(this.lista == null){
ContextoBean contextoBean = ContextoUtil.getContextoBean();
Conta conta = contextoBean.getContaAtiva();
Calendar dataSaldo = new GregorianCalendar();
dataSaldo.add(Calendar.MONTH, -1);
dataSaldo.add(Calendar.DAY_OF_MONTH, -1);
Calendar inicio = new GregorianCalendar();
inicio.add(Calendar.MONTH, -1);
LancamentoRN lancamentoRN = new LancamentoRN();
this.saldoGeral = lancamentoRN.saldo(conta, dataSaldo.getTime());
this.lista = lancamentoRN.listar(conta, inicio.getTime(), null);
this.saldos = new ArrayList<Double>();
Categoria categoria = null;
double saldo = this.saldoGeral;
for (Lancamento lancamento : this.lista) {
categoria = lancamento.getCategoria();
saldo = saldo + (lancamento.getValor().floatValue() *categoria.getFator());
//BigDecimal saldoItem = lancamento.getValor();
//double saldoLista = saldoItem.doubleValue();
this.saldos.add(saldo);
}
}
return this.lista;
}
public List<Lancamento> getListaAteHoje() {
if(this.listaAteHoje == null){
ContextoBean contextoBean = ContextoUtil.getContextoBean();
Conta conta = contextoBean.getContaAtiva();
Calendar hoje = new GregorianCalendar();
LancamentoRN lancamentoRN = new LancamentoRN();
this.listaAteHoje = lancamentoRN.listar(conta, null,hoje.getTime());
}
return this.listaAteHoje;
}
public List<Lancamento> getListaFuturo() {
if(this.listaFuturo == null){
ContextoBean contextoBean = ContextoUtil.getContextoBean();
Conta conta = contextoBean.getContaAtiva();
Calendar amanha = new GregorianCalendar();
amanha.add(Calendar.DAY_OF_MONTH, 1);
LancamentoRN lancamentoRN = new LancamentoRN();
this.listaFuturo = lancamentoRN.listar(conta, amanha.getTime(),null);
}
return this.listaFuturo;
}
public void mudouCheque(ValueChangeEvent event){
Integer chequeAnterior = (Integer) event.getOldValue();
if(chequeAnterior != null){
ContextoBean contextoBean = ContextoUtil.getContextoBean();
ChequeRN chequeRN = new ChequeRN();
try {
chequeRN.desvincularLancamento(contextoBean.getContaAtiva(), chequeAnterior);
} catch (RNException e) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage msg = new FacesMessage(e.getMessage());
context.addMessage(null, msg);
return;
}
}
}
public List<Double> getSaldos() {
return saldos;
}
public void setSaldos(List<Double> saldos) {
this.saldos = saldos;
}
public float getSaldoGeral() {
return saldoGeral;
}
public void setSaldoGeral(float saldoGeral) {
this.saldoGeral = saldoGeral;
}
public Lancamento getEditado() {
return editado;
}
public void setEditado(Lancamento editado) {
this.editado = editado;
}
public void setLista(List<Lancamento> lista) {
this.lista = lista;
}
public Integer getNumeroCheque() {
return numeroCheque;
}
public void setNumeroCheque(Integer numeroCheque) {
this.numeroCheque = numeroCheque;
}
public void setListaAteHoje(List<Lancamento> listaAteHoje) {
this.listaAteHoje = listaAteHoje;
}
public void setListaFuturo(List<Lancamento> listaFuturo) {
this.listaFuturo = listaFuturo;
}
}