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;
}
}