Olá pessoal, estou voltando ao fórum com um problema que está me deixando doido já li e reli vários tópicos e tutoriais porém não consegui
resolver o problema...
A coisa parece simples, estou fazendo um combo de empresas e cargos,
consigo recuperar a lista de empresas facilmente, porém ao tentar pegar o id da empresa selecionada para consultar a tabela de cargos por este id
não consigo recuperar o valor...
Segue o código:
index.xhtml<h:form>
<h:panelGrid columns="2">
<h:outputLabel for="empresaa" value="Estado " />
<h:selectOneMenu id="empresaa"
required="true"
rendered="true"
value="#{regiaoMB.idSelect}">
<f:selectItems value="#{empresaBean.listaEmpresa}"
var="v"
itemValue="#{v.idEmpresa}"
itemLabel="#{v.nome}"/>
<a4j event="onchange"
ajaxSingle="true"
action="#{regiaoMB.actionCarregaCidades()}"
reRender="empresaa,cargoo"/>
</h:selectOneMenu>
<h:outputLabel for="cargoo" value="Cargo " />
<h:selectOneMenu id="cargoo"
value="#{regiaoMB.cargo.idCargo}"
rendered="true">
<f:selectItem itemValue=""
itemLabel="Selecione..." />
<f:selectItems value="#{regiaoMB.cargos}" />
</h:selectOneMenu>
</h:panelGrid>
</h:form>
package teste;
import FactoryMethod.FactoryDAO;
import Interface.ICargoDAO;
import Interface.IEmpresaDAO;
import Model.Cargo;
import Model.Empresa;
import java.io.Serializable;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
@ManagedBean
@SessionScoped
public class RegiaoMB implements Serializable {
private static final long serialVersionUID = -4281390476508498320L;
private ICargoDAO dao = (ICargoDAO) FactoryDAO.creatObject(Cargo.class);
private IEmpresaDAO daoe = (IEmpresaDAO) FactoryDAO.creatObject(Empresa.class);
private List<SelectItem> cargos = new ArrayList<SelectItem>();
private Empresa empresa = new Empresa();
private Cargo cargo = new Cargo();
private int idSelect = 0;
public List<SelectItem> getEmpresas() throws ParseException, SQLException{
List<Empresa> lista = daoe.Listar();
List<SelectItem> itens = new ArrayList<SelectItem>(lista.size());
for(Empresa s : lista){
itens.add(new SelectItem(s.getIdEmpresa(), s.getNome()));
}
return itens;
}
public void actionCarregaCidades() throws ParseException, SQLException{
int a = this.idSelect; // Só utilizei essa linha para ver o valor da variável
this.cargos = this.getCidadesByEstado();
}
public List<SelectItem> getCidadesByEstado() throws ParseException, SQLException{
List<Cargo> listCargo = dao.ListCargoCombo(1);
List<SelectItem> items = new ArrayList<SelectItem>(cargos.size());
for(Cargo c : listCargo){
items.add(new SelectItem(c.getIdCargo(), c.getNomeCargo()));
}
return items;
}
public int getIdSelect() {
return idSelect;
}
public void setIdSelect(int idSelect) {
this.idSelect = idSelect;
}
public List<SelectItem> getCargos() {
return cargos;
}
public void setCidades(List<SelectItem> cargos) {
this.cargos = cargos;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
public Cargo getCargo() {
return cargo;
}
public void setCargo(Cargo cargo) {
this.cargo = cargo;
}
}
Ao debugar o sistema vejo que o valor da variável idSelect está como zero, ou seja, não está recuperando o valor...
Podem me ajudar por favor, preciso resolver isso para dar prosseguimento ao meu sistema.
Grato