Valores chegam nulos ao managedbean[RESOLVIDO]

6 respostas
daniel4613

Olá pessoal. Estou começando a programar em jsf e estou com um problema.

quando clico no botão cadastrar do meu formulário, os valores chegam nulos no MB.

estou usando jsf 1.2, a4j e richfaces.

segue abaixo o codigo do formulário

<rich:modalPanel id="painelcadastro" autosized="true">
			<f:facet name="header">
				<h:outputText value="Realizar Solicitação" />
			</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="form4" rendered="true">

				<h:panelGrid columns="2">
					
					<h:selectOneMenu value="#{solicitacaoMB.solicitacao.filsol}"
						id="comboFilial" 
						requiredMessage="Informe a filial" 	>
						<f:selectItem itemValue="" itemLabel="Selecione uma filial" />
						<f:selectItems value="#{solicitacaoMB.listaFilial}" />
					</h:selectOneMenu>
					
					  

					<p></p>

					<h:selectOneMenu value="#{solicitacaoMB.solicitacao.codpro }"
						id="comboProduto" required="true"
						requiredMessage="Informe o produto"
						valueChangeListener="#{solicitacaoMB.metodoTrocaDerivacao }"
						immediate="true" rendered="true">
						<f:selectItem itemValue="" itemLabel="Selecione um produto" />
							<f:selectItems value="#{pmb.lista}" />

						<a4j:support event="onchange" reRender="comboDerivacao"
							immediate="true" ajaxSingle="true" 
							/>

					</h:selectOneMenu>

					<p></p>
					<h:selectOneMenu value="#{solicitacaoMB.solicitacao.codder }"
						id="comboDerivacao">
						<f:selectItem itemValue="" itemLabel="Selecione a derivação" />
						<f:selectItem itemValue="" itemLabel="" />
						<f:selectItems value="#{solicitacaoMB.listaDerivacao}" />
						
					</h:selectOneMenu>
					
					<p></p>

					<h:selectOneMenu value="#{solicitacaoMB.solicitacao.coddep}"
						id="comboDeposito">
						<f:selectItem itemValue="" itemLabel="Selecione um depósito" />
						<f:selectItems value="#{solicitacaoMB.listaDeposito}" />
					</h:selectOneMenu>



					<p></p>


				</h:panelGrid>


					<h:outputText value="QUANTIDADE" />
					<h:inputText value="#{solicitacaoMB.solicitacao.qtdsol}" id="quantidade" />

					<h:outputText value="PREVISÃO" />
					<h:inputText value="#{solicitacaoMB.solicitacao.datprv}" id="data">
						<rich:jQuery id="dataMascara" selector="#data"
							query="mask('99/99/9999')" timing="onload" />
					</h:inputText>
				

				<a4j:commandButton value="Cadastrar"
					action="#{solicitacaoMB.realizarSolicitacao }"
					reRender="formListaSolicitacoes, addsol"
					status="statusAdicionarCotacao"
					immediate="true"/>
					
					<h:commandButton action="#{solicitacaoMB.realizarSolicitacao }"  value="clica ae" immediate="true"/>
					
				<rich:messages for="form4" />

				<a4j:region>
					<div style="position: absolute; top: 75%; left: 50%;">
						<a4j:status id="statusAdicionarCotacao">
							<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:form>

		</rich:modalPanel>

e abaixo segue o código do MB

package manager;

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 persistence.DepositoDao;
import persistence.DerivacaoDao;
import persistence.EmpresaDao;
import persistence.FilialDao;
import persistence.SolicitacaoDao;

import entity.Deposito;
import entity.Derivacao;
import entity.Empresa;
import entity.Filial;
import entity.Produto;
import entity.Solicitacao;

public class SolicitacaoMB {

	public Solicitacao solicitacao;
	public Filial filial;
	public Empresa empresa;
	public Produto produto;
	public Deposito deposito;

	public List<Solicitacao> solicitacoesDigitadas;
	public List<Empresa> listaEmpresa;
	public List<Filial> listaFilial;
	public List<Deposito> listaDeposito;
	public List<Derivacao> listaDerivacao;

	public List<SelectItem> getListaDerivacao() {
		try {
			listaDerivacao = new ArrayList<Derivacao>();
			List<SelectItem> lista = new LinkedList<SelectItem>();
			DerivacaoDao dDao = new DerivacaoDao();
			List<Derivacao> resultado = (List<Derivacao>) dDao
					.buscarDerivacoes(solicitacao.getCodpro());

			if (resultado != null) {
				for (Derivacao d : resultado) {
					SelectItem item = new SelectItem(d.getCodder(),	d.getDesder());
					lista.add(item);
				}
			}
			return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public void setListaDerivacao(List<Derivacao> listaDerivacao) {
		this.listaDerivacao = listaDerivacao;
	}

	public List<SelectItem> getListaDeposito() {
		try {
			listaDeposito = new ArrayList<Deposito>();
			List<SelectItem> lista = new LinkedList<SelectItem>();
			DepositoDao dDao = new DepositoDao();
			List<Deposito> resultado = (List<Deposito>) dDao.buscarDepositos();

			for (Deposito d : resultado) {
				SelectItem item = new SelectItem(d.getCoddep(),	d.getDesdep());
				lista.add(item);
			}

			return lista;

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

	public void setListaDeposito(List<Deposito> listaDeposito) {
		this.listaDeposito = listaDeposito;
	}

	public SolicitacaoMB() {

		Calendar cal = Calendar.getInstance();
		DateFormat sdf_data = new SimpleDateFormat("dd/MM/yyyy");
		DateFormat sdf_hora = new SimpleDateFormat("HH:MM");
		solicitacao = new Solicitacao();
		solicitacao.setDatsol(sdf_data.format(cal.getTime()));
		solicitacao.setHorsol(sdf_hora.format(cal.getTime()));
		deposito = new Deposito();
		empresa = new Empresa();
		produto = new Produto();
		solicitacoesDigitadas = new ArrayList<Solicitacao>();
		
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public List<SelectItem> getListaFilial() {
		try {
			filial = new Filial();
			listaFilial = new ArrayList<Filial>();
			List<SelectItem> lista = new LinkedList<SelectItem>();
			FilialDao fDao = new FilialDao();
			List<Filial> resultado;

			if (fDao.buscarFilial() != null) {
				resultado = (List<Filial>) fDao.buscarFilial();

				if (resultado != null) {
					for (Filial f : resultado) {
						SelectItem item = new SelectItem(f.getCodfil(), f.getNomfil());
						lista.add(item);
					}
				}
				
			}
			return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public void setListaFilial(List<Filial> listaFilial) {
		this.listaFilial = listaFilial;
	}

	public List<SelectItem> getListaEmpresa() {
		try {
			listaEmpresa = new ArrayList<Empresa>();
			List<SelectItem> lista = new LinkedList<SelectItem>();
			EmpresaDao eDao = new EmpresaDao();
			List<Empresa> resultado = (List<Empresa>) eDao.buscarEmpresa();

			if (resultado.size() > 0) {

				for (Empresa e : resultado) {
					SelectItem item = new SelectItem(e.getCodemp(),
							e.getNomemp());
					lista.add(item);
				}
			}
			return lista;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public void setListaEmpresa(List<Empresa> listaEmpresa) {
		this.listaEmpresa = listaEmpresa;
	}

	public Filial getFilial() {
		return filial;
	}

	public void setFilial(Filial filial) {
		this.filial = filial;
	}

	public Solicitacao getSolicitacao() {
		return solicitacao;
	}

	public void setSolicitacao(Solicitacao solicitacao) {
		this.solicitacao = solicitacao;
	}

	public List<Solicitacao> getSolicitacoesDigitadas() {
		try {
			solicitacoesDigitadas = new SolicitacaoDao()
					.buscarSolicitacoesDigitadas();

			return solicitacoesDigitadas;

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

	public void setSolicitacoesDigitadas(List<Solicitacao> solicitacoesDigitadas) {
		this.solicitacoesDigitadas = solicitacoesDigitadas;
	}
	
	public String realizarSolicitacao() {
		FacesContext fc = FacesContext.getCurrentInstance();
		try {
			System.out.println(solicitacao);
			
			new SolicitacaoDao().save(solicitacao);

			solicitacao = new Solicitacao();

			fc.addMessage("form4", new FacesMessage("Solicitação realizada com sucesso!"));

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

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Deposito getDeposito() {
		return deposito;
	}

	public void setDeposito(Deposito deposito) {
		this.deposito = deposito;
	}

}

6 Respostas

daniel4613

aa uma observação

se eu clicar só no botão CADASTRAR acontece isso… agora se eu clicar no botão CLICA AE e logo em seguida no CADASTRAR ai o valor da derivação, todos os outros são passados…

renanjp

Tenta usar o command button do <h:>
remove o ajax…

daniel4613

Fiz essas mudanças mas não funciona ainda… os valores continuam chegando nulos ao MB.

daniel4613

aee. tirei o ajax e coloquei só o formulário em outro arquivo e funcionou. só que mais um problema… agora só a combobox que das derivações não está passando o valor selecionado…

a única diferença dela para as outras é que ela é renderizada de acordo com o produto selecionado na combo de cima.

daniel4613

Outra coisa que eu reparei hj é que quando coloco para mostrar o código fonte… essa combobox está sem nenhum valor…e lá na página ela está preenchida

daniel4613

RESOLVIDO… coloquei onchange="submit()" no h:selectOneMenu

Criado 3 de agosto de 2012
Ultima resposta 6 de ago. de 2012
Respostas 6
Participantes 2