Valores do modalPanel chegam nulos ao ManagedBean

Olá a todos… gostariam de pedir a ajuda de vcs em uma coisa…

na hora que eu vou salvar os dados existentes em um modalPanel os valores chegam nulos ao managedbean…

teve uma vez que isso aconteceu comigo… que eu resolvi retirando o ajax e colocando onchange=“submit()” no selectonemenu…

só que agora não está indo nenhum valor de nenhum campo.

quem puder me dar uma ajuda eu agradeço

segue abaixo a minha página.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>

<!--Chamada ao arquivo CSS -->
<link rel="StyleSheet" type="text/css" href="css/estilos.css"
	media="screen">
<script type="text/javascript" src="jquery/jquery.maskedinput-1.1.4.js"></script>
</head>
<body>

	<f:view>
		<rich:panel header="Sistema de Cotação Milano">

			<rich:tabPanel switchType="client" id="tp" rendered="true">

				<rich:tab label="Cotação" id="aba1" name="aba1">

					<a4j:form id="form1">

						<table border="1" align="center">
							<tr bgcolor="#CFCFCF">
								<td><h:outputText value="Solicitação" />
								</td>
								<td><h:outputText value="Data da Solicitação" />
								</td>
								<td><h:outputText value="Produto" />
								<td><h:outputText value="Derivação" />
								<td><h:outputText value="UN" />
								<td><h:outputText value="Quantidade" />
								<td><h:outputText value="Previsão" />
								<td><h:outputText value="Depósito" />
								<td><h:outputText value="Observação" />
							</tr>
							<tr>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.numsol }" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.datsol }" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.despro}" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.desder}" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.unimed}" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.qtdsol}" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.datprv}" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.coddep}" />
								</td>
								<td><h:outputText
										value="#{solicitacaoMB.solicitacao.obssol}" />
								</td>
							</tr>
						</table>

						<a4j:region>
							<div style="position: absolute; top: 15%; left: 50%;">
								<a4j:status id="status">
									<f:facet name="start">
										<h:panelGrid>
											<h:column>
												<h:graphicImage value="/images/loader.gif" />
											</h:column>
											<h:column>
												<h:outputText value="Aguarde..."
													style="text-size:30px; font-family: Arial; font-weight: bold" />
											</h:column>
										</h:panelGrid>
									</f:facet>
								</a4j:status>
							</div>
						</a4j:region>

						<a4j:commandButton value="Buscar" id="btnPesq" status="status"
							action="#{solicitacaoMB.buscarCompra }"
							reRender="tp, mostrarcompra, mostrarvenda" />

						<a4j:commandButton value="Voltar" id="voltar" status="status"
							action="voltar" immediate="true" />

						<a4j:commandButton value="Sair" id="sair" status="status"
							action="sair" immediate="true" />


					</a4j:form>


					<h:outputText value="COMPRAS" styleClass="titulos" />
					<h:outputText />

					<h:panelGrid columns="3">



						<a4j:form id="mostrarcompra">
							<rich:dataTable value="#{solicitacaoMB.listaCompra}" var="c"
								width="1150">

								<rich:column width="3%">
									<f:facet name="header">
										<h:outputText value="CODFIL" />
									</f:facet>
									<h:outputText value="#{c.codfil }" />
								</rich:column>

								<rich:column width="3%">
									<f:facet name="header">
										<h:outputText value="CODPRO" />
									</f:facet>
									<h:outputText value="#{c.codpro }" id="prod" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="CODFOR" />
									</f:facet>
									<h:outputText value="#{c.codfor }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="FORNECEDOR" />
									</f:facet>
									<h:outputText value="#{c.nomfor }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="SIGUFS" />
									</f:facet>
									<h:outputText value="#{c.sigufs }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="CODDER" />
									</f:facet>
									<h:outputText value="#{c.codder }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="DERIVAÇÃO" />
									</f:facet>
									<h:outputText value="#{c.desder }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="ENTRADA" />
									</f:facet>
									<h:outputText value="#{c.datent }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="QUANTIDADE" />
									</f:facet>
									<h:outputText value="#{c.quantidade }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="Preço Unitário" />
									</f:facet>
									<h:outputText value="#{c.preuni }">
										<f:convertNumber type="currency" maxFractionDigits="2"
											minFractionDigits="2" />
									</h:outputText>

								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="ST ICMS" />
									</f:facet>
									<h:outputText value="#{c.codtic }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="ICMS" />
									</f:facet>
									<h:outputText value="#{c.vlricm }">
										<f:convertNumber type="currency" maxFractionDigits="2"
											minFractionDigits="2" />
									</h:outputText>
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="PIS" />
									</f:facet>
									<h:outputText value="#{c.vlrpis }">
										<f:convertNumber type="currency" maxFractionDigits="2"
											minFractionDigits="2" />
									</h:outputText>
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="COFINS" />
									</f:facet>
									<h:outputText value="#{c.vlrcor }">
										<f:convertNumber type="currency" maxFractionDigits="2"
											minFractionDigits="2" />
									</h:outputText>
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="VALOR LÍQUIDO(R$)" />
									</f:facet>
									<h:outputText value="#{c.vlrliq }">
										<f:convertNumber type="currency" maxFractionDigits="2"
											minFractionDigits="2" />
									</h:outputText>
								</rich:column>

							</rich:dataTable>

							<rich:message for="form2" />

						</a4j:form>

					</h:panelGrid>

					<!-- Iniando busca das vendas -->

					<h:outputText value="VENDAS" styleClass="titulos" />
					<h:outputText />

					<h:panelGrid columns="3">

						<a4j:form id="mostrarvenda">
							<rich:dataTable value="#{solicitacaoMB.listaVenda}" var="v">

								<rich:column width="3%">
									<f:facet name="header">
										<h:outputText value="CODFIL" />
									</f:facet>
									<h:outputText value="#{v.codfil }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="CODRAM" />
									</f:facet>
									<h:outputText value="#{v.codram }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="RAMO" />
									</f:facet>
									<h:outputText value="#{v.desram }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="CODDER" />
									</f:facet>
									<h:outputText value="#{v.codder }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="DERIVAÇÃO" />
									</f:facet>
									<h:outputText value="#{v.desder }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="QUANTIDADE" />
									</f:facet>
									<h:outputText value="#{v.quantidade }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="Preço Médio Unitário" />
									</f:facet>
									<h:outputText value="#{v.premed }" />
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="VLRICM" />
									</f:facet>
									<h:outputText value="#{v.vlricm }" />

								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="VLRPIS" />
									</f:facet>
									<h:outputText value="#{v.vlrpis }">
										<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
									</h:outputText>
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="VLRCOR" />
									</f:facet>
									<h:outputText value="#{v.vlrcor }">
										<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
									</h:outputText>
								</rich:column>

								<rich:column>
									<f:facet name="header">
										<h:outputText value="PREÇO LÍQUIDO" />
									</f:facet>
									<h:outputText value="#{v.preliq }">
										<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
									</h:outputText>
								</rich:column>

							</rich:dataTable>

							<rich:message for="form3" />

						</a4j:form>

					</h:panelGrid>

					<p></p>
					<p></p>





				</rich:tab>

			</rich:tabPanel>
		</rich:panel>

		<rich:panel header="Cotação">
			<a4j:commandLink id="cadastrar" value="Cadastrar Cotação">
				<rich:componentControl attachTo="cadastrar" operation="show"
					event="onclick" for="painelcadastro" />
			</a4j:commandLink>
			<p></p>

			<rich:modalPanel id="painelcadastro" autosized="true">
				<f:facet name="header">
					<h:outputText value="COTAR PRODUTO" />
				</f:facet>
				<f:facet name="controls">
					<a4j:commandLink value="Fechar" id="fechar">
						<rich:componentControl attachTo="fechar" operation="hide"
							event="onclick" for="painelcadastro" />
					</a4j:commandLink>
				</f:facet>

				<a4j:form id="modalCadastro">
					<h:panelGrid columns="2">
						<h:outputText value="Solicitação" />
						<h:outputText value="#{cmb.cotacao.usu_numsol }" />
					</h:panelGrid>

					<h:panelGrid columns="2">

						<h:outputText value="Fornecedor" />
						<h:selectOneMenu value="#{cmb.cotacao.usu_codfor}" required="true"
							id="codfor" requiredMessage="Informe o fornecedor"
							immediate="true">
							<f:selectItem itemValue="" itemLabel="Selecione um fornecedor" />
							<f:selectItems value="#{cmb.listaFornecedor}" var="cot"
								itemLabel="#{cod.usu_nomfor }" itemValue="#{cot.usu_codfor }" />
						</h:selectOneMenu>

						<h:outputText value="Derivação" />
						<h:selectOneMenu value="#{cmb.cotacao.usu_codder}" required="true"
							id="codder" requiredMessage="Informe a derivação"
							immediate="true">
							<f:selectItem itemValue="" itemLabel="Selecione uma derivação" />
							<f:selectItems
								value="#{solicitacaoMB.listaDerivacoesVerificadas}" var="cot"
								itemLabel="#{cod.desder }" itemValue="#{cot.codder }" />
						</h:selectOneMenu>

						<h:outputText value="Quantidade" />
						<rich:inputNumberSpinner value="#{cmb.cotacao.usu_qtdcot}"
							minValue="1" maxValue="500000" />

						<h:outputText value="Valor" />
						<h:inputText value="#{cmb.cotacao.usu_precot }" />

						<h:outputText value="Previsão" />
						<rich:calendar id="calendario"  inputSize="8" datePattern="dd/MM/yyyy" value="#{cmb.cotacao.usu_datprv }" enableManualInput="false"  />  


						<a4j:commandButton value="Cotar" action="#{cmb.save }"
							immediate="true" />

					</h:panelGrid>

					<h:message for="modalCadastro" />

				</a4j:form>

			</rich:modalPanel>

		</rich:panel>

	</f:view>
</body>
</html>

e aqui tem o meu managedbean

package manager;

import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;

import persistence.CotacaoDao;
import persistence.FornecedorDao;

import entity.Agrupamento;
import entity.Cotacao;
import entity.Familia;
import entity.Fornecedor;
import entity.Produto;
import entity.Solicitacao;

public class CotacaoMB {

	public Cotacao cotacao;
	public List<Solicitacao> listaSolicitacoes;
	public List<Agrupamento> listaAgrupamentos;
	public List<Familia> listaFamilias;
	public List<Produto> listaProdutoPorFamilia;
	
	public List<Fornecedor> listaFornecedor;

	public CotacaoMB() {
		/* Criando objeto cotacao e atribuindo a ele a data e hora atual */
		cotacao = new Cotacao();
		Calendar cal = Calendar.getInstance();
		DateFormat sdf_data = new SimpleDateFormat("dd/MM/yyyy");
		DateFormat sdf_hora = new SimpleDateFormat("HH:MM");		
		cotacao.setUsu_datcot(sdf_data.format(cal.getTime()));
		cotacao.setUsu_horcot(sdf_hora.format(cal.getTime()));
		
		/* Pegando o número da solicitação da sessão, caso exista */
		FacesContext fc = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
		if(session.getAttribute("sol") != null){
		cotacao.setUsu_numsol((Integer) session.getAttribute("sol"));
		}
		
		
		listaSolicitacoes = new ArrayList<Solicitacao>();
	}

	public List<SelectItem> getListaProdutoPorFamilia() {
		try {
			List<SelectItem> lista = new LinkedList<SelectItem>();
			CotacaoDao cDao = new CotacaoDao();
			List<Produto> resultado = (List<Produto>) cDao
					.buscarProdutosPorFamilia(cotacao.getFamilia());

			if (resultado != null) {
				for (Produto pro : resultado) {
					SelectItem item = new SelectItem(pro.getCodpro(),
							pro.getDespro());
					lista.add(item);
				}
			}
			return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public List<Solicitacao> buscarSolicitacoesPorProduto() {
		FacesContext fc = FacesContext.getCurrentInstance();
		try {
			
			listaSolicitacoes = new ArrayList<Solicitacao>();
			
			
			listaSolicitacoes = new CotacaoDao()
					.buscarSolicitacoesDigitadas(cotacao.getProduto(), cotacao.getUsu_datprv());
			
			System.out.println(cotacao.getProduto() + " - " + cotacao.getUsu_datprv());

			if (listaSolicitacoes.size() == 0) {
				fc.addMessage("form_most_sol_pend", new FacesMessage(
						"Cotações não encontradas para o produto selecionado!"));
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void setListaProdutoPorFamilia(List<Produto> listaProdutoPorFamilia) {
		this.listaProdutoPorFamilia = listaProdutoPorFamilia;
	}

	public List<Solicitacao> getListaSolicitacoes() {
		FacesContext fc = FacesContext.getCurrentInstance();
		try {

			listaSolicitacoes = new ArrayList<Solicitacao>();
			listaSolicitacoes = new CotacaoDao()
					.buscarSolicitacoesDigitadas();

			if (listaSolicitacoes.size() == 0) {
				fc.addMessage("form_most_sol_pend", new FacesMessage(
						"Solicitações não encontradas para o produto selecionado!"));
			}
			
			return listaSolicitacoes;

		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public void setListaSolicitacoes(List<Solicitacao> listaSolicitacoes) {
		this.listaSolicitacoes = listaSolicitacoes;
	}

	public List<SelectItem> getListaFamilias() {
		try {
			List<SelectItem> lista = new LinkedList<SelectItem>();
			CotacaoDao cDao = new CotacaoDao();
			List<Familia> resultado = (List<Familia>) cDao.buscarFamilias();

			if (resultado != null) {
				for (Familia fam : resultado) {
					SelectItem item = new SelectItem(fam.getCodfam(),
							fam.getDesfam());
					lista.add(item);
				}
			}
			return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public List<SelectItem> getListaAgrupamentos() {
		try {
			List<SelectItem> lista = new LinkedList<SelectItem>();
			CotacaoDao cDao = new CotacaoDao();
			List<Agrupamento> resultado = (List<Agrupamento>) cDao
					.buscarAgrupamentos();

			if (resultado != null) {
				for (Agrupamento agp : resultado) {
					SelectItem item = new SelectItem(agp.getCodagp(),
							agp.getDesagp());
					lista.add(item);
				}
			}
			return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public String save() {
		FacesContext fc = FacesContext.getCurrentInstance();
		try {
			
			System.out.println(cotacao);
			
			new CotacaoDao().save(cotacao);
			
			fc.addMessage("modalCadastro", new FacesMessage("Cotação realizada com sucesso!"));
		} catch (Exception e) {
			e.printStackTrace();
			fc.addMessage("modalCadastro", new FacesMessage("Erro ao gravar cotação: " + e.getMessage()));
		}

		return null;
	}
	
	// public List<Cotacao> getListaCotacoesPendentes() {
	// try {
	// listaCotacoesPendentes = new CotacaoDao().buscarCotacoes(cotacao
	// .getCodpro());
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	//
	// return listaCotacoesPendentes;
	// }
	
	public List<SelectItem> getListaFornecedor() {
		List<SelectItem> lista = new LinkedList<SelectItem>();
		try {
			FornecedorDao fDao = new FornecedorDao();
			List<Fornecedor> resultado = (List<Fornecedor>) fDao
					.buscarFornecedores();

			for (Fornecedor f : resultado) {
				SelectItem item = new SelectItem(f.getCodfor(), f.getNomfor());
				lista.add(item);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return lista;
	}

	/* Alterando o produto de acordo com a familia selecionada */
	public void metodoTrocaProduto(ValueChangeEvent event) {
		cotacao.setFamilia(event.getNewValue().toString());
	}
	
	public void setListaFornecedor(List<Fornecedor> listaFornecedor) {
		this.listaFornecedor = listaFornecedor;
	}

	public Cotacao getCotacao() {
		return cotacao;
	}

	public void setCotacao(Cotacao cotacao) {
		this.cotacao = cotacao;
	}

}