Jsf + selectOneListbox

Pessoal, estou desenvolvendo uma aplicação pequena com JSF e Hibernate, mais surgiu a dificuldade de capturar o id do cargo selecionado no selectOneListbox. Pesquisei bastante, fiz alguns exemplos q encontrei na internet, mais infelismente não consegui e estou pedindo a ajuda de vc´s.

O selectOneListbox é populado corretamente, só preciso msm o id do registro selecionado.
Tentei criar um Backbean (cargoBackbean) e tentei “associa-lo” ao componente (action="#{cargobean.capturaIdCargo}" ), mais com ctz esta “muito” errado.

Segue o código:

Classe: cargo.java
@Entity
public class cargo {

@Id
@GeneratedValue	
private Long id;
private String cargo;	
	
public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}
public String getCargo() {
	return cargo;
}
public void setCargo(String cargo) {
	this.cargo = cargo;
}	

}

Classe: cargoDAO.java
public class cargoDAO {

private cargo cargo = new cargo();

public cargo getCargo() {
	return cargo;
}

private List listaCargos;

public List getLstCargos(){
	List<cargo> list = new cargoDAO().getCargosAll();
	listaCargos = new ArrayList();
	for(cargo c : list){
		SelectItem si = new SelectItem();
		si.setLabel(c.getCargo());
		si.setValue(c.getId().toString());
		listaCargos.add(si);
	}
	return listaCargos;
}

public void setListaCargos(List listaCargos) {
	this.listaCargos = listaCargos;
}

public List getListaCargos() {
	return listaCargos;
}

}

Classe: cargoBackbean.java
public class cargoBackbean {

private Session session;

private cargo cargo = new cargo();	

public cargo getCargo() {
	return cargo;
}

private Long idCargo;

public void setIdCargo(Long idCargo) {
	this.idCargo = idCargo;
}

public Long getIdCargo() {
	return idCargo;
}

public Long capturaIdCargo(){
	this.idCargo = cargo.getId();
	System.out.println("capturaIdCargo: " + idCargo);
	return idCargo;		
}

}

jsf:

<h:selectOneListbox id=“lstCargos” value="#{cargoDAO.cargo.cargo}">
<f:selectItems value="#{cargoDAO.lstCargos}"/>
</h:selectOneListbox>

<h:commandButton value=“Buscar Funcionário(s)” action="#{cargobean.capturaIdCargo}" />

Fico no aguardo da sugestão de vc´s.

Agradeço desde já.

Opa blza?

Bom, tem algumas coisas estranhas no seu código ai, mas partindo direto para a resolução do problema, eu acho q no selectItems tem uma propriedade chamada selected, que ai cv aponta ela pro Codigo da sua classe de entidade ( no seu caso seria algo como cargo.id ). Dai entao o componente passa o selecionado para tua classe.

Nao me lembro bem se é essa propriedade pois naõ mexo mais com jsf mas acho que e isso mesmo.

Se não for essa é algo do tipo, pois o que falta é vc dizer pra combo onde ela vai jogar o valor do selecionado.

Abraços!