Estou desenvolvendo uma aplicação, onde uma tela é dividida em abas. Dentro dessas abas as combos não estão capturando os dados das tabelas correspondentes do banco de dados. Entretanto, nessa mesma tela, fora das abas, existem outras combos que conseguem capturar os respectivos valores armazenados no banco de dados.
Gostaria de pedir a ajuda de vocês para que possa resolver esse problema.
Segue abaixo o código da página da aplicação:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
template="/templates/modelo.xhtml">
<ui:define name="conteudo">
<h:form id="formListagem">
<p:panel header="Listagem de Compras">
<p:dataTable id="tabela" emptyMessage="Nenhum registro encontrado"
paginator="true" value="#{compraBean.compras}" var="compra"
rows="5">
<f:facet name="footer">
<p:commandButton value="Novo" oncomplete="PF('dialogo').show();"
actionListener="#{compraBean.novo}"
update=":mensagem :formCadastro:painel">
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</f:facet>
<p:column headerText="Compra" sortBy="#{compra.codigo}"
filterBy="#{compra.codigo}">
<h:outputText value="#{compra.codigo}" />
</p:column>
<p:column headerText="Descrição" sortBy="#{compra.descricao}"
filterBy="#{compra.descricao}">
<h:outputText value="#{compra.descricao}" />
</p:column>
<p:column headerText="Data Compra" sortBy="#{compra.data_compra}"
filterBy="#{compra.data_compra}">
<h:outputText value="#{compra.data_compra}">
<f:convertDateTime locale="pt_BR" />
</h:outputText>
</p:column>
<p:column headerText="Quantidade" sortBy="#{compra.quantidade}"
filterBy="#{compra.quantidade}">
<h:outputText value="#{compra.quantidade}" />
</p:column>
<p:column headerText="Preço" sortBy="#{compra.preco}"
filterBy="#{compra.preco}">
<h:outputText value="#{compra.preco}">
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</h:outputText>
</p:column>
<p:column headerText="Parcelas" sortBy="#{compra.parcelas}"
filterBy="#{compra.parcelas}">
<h:outputText value="#{compra.parcelas}" />
</p:column>
<p:column headerText="Produto" filterBy="#{compra.produto}">
<h:outputText value="#{compra.produto.descricao}" />
</p:column>
<p:column headerText="Categoria" filterBy="#{compra.categoria}">
<h:outputText value="#{compra.categoria.descricao}" />
</p:column>
<p:column headerText="Fornecedor" filterBy="#{compra.fornecedor}">
<h:outputText value="#{compra.fornecedor.nome_fornecedor}" />
</p:column>
<p:column headerText="Pagamento" filterBy="#{compra.tipoPagamento}">
<h:outputText value="#{compra.tipoPagamento.desc_tipo_pagamento}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-trash"
actionListener="#{compraBean.excluir}"
update=":mensagem :formListagem:tabela">
<p:confirm header="Confirmação"
message="Deseja realmente excluir o produto?"
icon="ui-icon-alert" />
<f:attribute name="compraSelecionada" value="#{compra}" />
</p:commandButton>
<p:commandButton icon="ui-icon-pencil"
actionListener="#{compraBean.editar}"
update=":mensagem :formCadastro:painel"
oncomplete="PF('dialogo').show();">
<f:attribute name="compraSelecionada" value="#{compra}" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<!-- CADASTRO DE UMA NOVA COMPRA -->
<p:dialog header="Cadastro de Compras" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<h:form id="formCadastro" enctype="multipart/form-data">
<h:panelGrid id="painel" columns="6">
<p:outputLabel for="codigo" value="Compra" />
<p:inputText id="codigo" maxlength="30" size="20"
value="#{compraBean.compra.codigo}" required="true"
requiredMessage="O campo código é obrigatório" />
<p:outputLabel for="fornecedor" value="Fornecedor" />
<p:selectOneMenu id="fornecedor" filter="true"
value="#{compraBean.compra.fornecedor}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="O campo Fornecedor é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um Fornecedor" />
<f:selectItems value="#{compraBean.fornecedores}" var="fornecedor"
itemValue="#{fornecedor}"
itemLabel="#{fornecedor.nome_fornecedor}" />
</p:selectOneMenu>
<p:outputLabel for="dataCompra" value="Data da Compra" />
<p:calendar id="dataCompra"
value="#{compraBean.compra.data_compra}" required="true"
requiredMessage="O campo Data da Compra é obrigatório" size="10" />
<p:outputLabel />
<p:outputLabel />
<p:outputLabel for="cliente" value="Cliente" />
<p:selectOneMenu id="cliente" filter="true"
value="#{compraBean.compra.cliente}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="O campo Cliente é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um Cliente" />
<f:selectItems value="#{compraBean.clientes}" var="cliente"
itemValue="#{cliente}" itemLabel="#{cliente.nome_cliente}" />
</p:selectOneMenu>
</h:panelGrid>
<p:tabView dynamic="true" id="cadastro">
<!-- ABA DE PRODUTO -->
<p:tab id="prod" title="Produto">
<h:panelGrid columns="7">
<p:outputLabel for="codProduto" value="Produto" />
<p:outputLabel for="descricao" value="Descrição" />
<p:outputLabel for="categoria" value="Categoria" />
<p:outputLabel for="custo" value="Custo" />
<p:outputLabel for="precoVenda" value="Preço Venda" />
<p:outputLabel for="local" value="Local" />
<p:outputLabel for="prodMontado" value="Produto Montado" />
<p:selectOneMenu id="codProduto" filter="true"
value="#{compraBean.compra.produto}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="O campo Código do Produto é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um Produto" />
<f:selectItems value="#{compraBean.produtos}" var="produto"
itemValue="#{produto}" itemLabel="#{produto.codigo}" />
</p:selectOneMenu>
<p:inputText id="descricao" maxlength="50" size="20"
value="#{compraBean.compra.descricao}" required="true"
requiredMessage="O campo descrição é obrigatório" />
<p:selectOneMenu id="categoria" filter="true"
value="#{compraBean.compra.categoria}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="O campo Categoria é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione uma Categoria" />
<f:selectItems value="#{compraBean.categorias}" var="categoria"
itemValue="#{categoria}" itemLabel="#{categoria.descricao}" />
</p:selectOneMenu>
<p:inputText id="custo" maxlength="50" size="20"
value="#{compraBean.compra.custo}" required="true"
requiredMessage="O campo custo é obrigatório"
converterMessage="Informe um valor válido para o campo 'Custo'"
validatorMessage="Informe um valor entre 0,01 e 9999,99 para o campo 'Custo'">
<f:validateDoubleRange minimum="0.01" maximum="9999.99" />
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:inputText id="precoVenda" maxlength="50" size="20"
value="#{compraBean.compra.preco_venda}" required="true"
requiredMessage="O campo Preço de Venda é obrigatório"
converterMessage="Informe um valor válido para o campo 'Preço de Venda'"
validatorMessage="Informe um valor entre 0,01 e 9999,99 para o campo 'Preço de Venda'">
<f:validateDoubleRange minimum="0.01" maximum="9999.99" />
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:inputText id="local" maxlength="50" size="20"
value="#{compraBean.compra.local}" required="true"
requiredMessage="O campo Local é obrigatório" />
<p:inputText id="prodMontado" maxlength="50" size="20"
value="#{compraBean.compra.prod_montado}" required="true"
requiredMessage="O campo Produto Montado é obrigatório" />
</h:panelGrid>
</p:tab>
<!-- ABA DE PRESTAÇÃO -->
<p:tab id="prest" title="Prestação">
<h:panelGrid columns="7">
<p:outputLabel for="codPrest" value="Prestação" />
<p:outputLabel for="dataPrevisao" value="Data Previsão" />
<p:outputLabel for="dataPagamento" value="Data Pagamento" />
<p:outputLabel for="valor" value="Valor" />
<p:outputLabel for="tipopagamento" value="TipoPagamento" />
<p:outputLabel />
<p:outputLabel />
<p:inputText id="codPrest" maxlength="50" size="20"
value="#{compraBean.compra.codigo_prestacao}" required="true"
requiredMessage="O campo Código da Prestação é obrigatório" />
<p:calendar id="dataPrevisao"
value="#{compraBean.compra.data_previsao}" required="true"
requiredMessage="O campo Data de Previsão é obrigatório"
size="20" />
<p:calendar id="dataPagamento"
value="#{compraBean.compra.data_pagamento}" required="true"
requiredMessage="O campo Data de Pagamento é obrigatório"
size="20" />
<p:inputText id="valor" maxlength="50" size="20"
value="#{compraBean.compra.valor}" required="true"
requiredMessage="O campo valor é obrigatório"
converterMessage="Informe um valor válido para o campo 'Valor'"
validatorMessage="Informe um valor entre 0,01 e 9999,99 para o campo 'Total'">
<f:validateDoubleRange minimum="0.01" maximum="9999.99" />
<f:convertNumber locale="pt_BR" minFractionDigits="2" />
</p:inputText>
<p:selectOneMenu id="tipopagamento" filter="true"
value="#{compraBean.compra.tipoPagamento}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="O campo Tipo Pagamento é obrigatório">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um Tipo Pagamento" />
<f:selectItems value="#{compraBean.tipospagamentos}"
var="tipopagamento" itemValue="#{tipopagamento}"
itemLabel="#{tipopagamento.desc_tipo_pagamento}" />
<p:ajax event="change" listener="#{compraBean.renderizar}"
update=":formCadastro:cadastro" />
</p:selectOneMenu>
<p:outputLabel />
<p:outputLabel />
</h:panelGrid>
</p:tab>
</p:tabView>
<h:panelGrid columns="2">
<p:commandButton value="Salvar"
actionListener="#{compraBean.salvar}"
update=":mensagem :formCadastro:painel :formListagem:tabela" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>