Como popular um SelectOneMenu através de um bean?

Olá, minha dúvida é a seguinte: como popular um SelectOneMenu através de um bean?
Alguém poderia dar um exemplo de como fazer isso?
Desde já agradeço a atenção. :wink:

No Bean:

public List<SelectItem> getOpcoes() { List<SelectItem> lst = new ArrayList<SelectItem>(); lst.add(new SelectItem('S', "Sim")); lst.add(new SelectItem('N', "Não")); return lst; }

Na view:

<h:selectOneMenu id="id" value="#{bean.valor}"> <f:selectItems value="#{bean.opcoes}" /> </h:selectOneMenu>

Cara, eu uso conforme abaixo… Qualquer duvida poste novamente!

No JSP

         <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
  
         <h:selectOneMenu id="menu" value="#{mbean.campo}">
               <f:selectItems value="#{mbean.listaCombo}" />
         </h:selectOneMenu>

No MBean

         import javax.faces.model.SelectItem;

         List<SelectItem> listaCombo = new ArrayList<SelectItem>();//Crie um ArrayList de SelectItem
         listaCombo.add(new SelectItem("codigo", "descricao"));//Cada add que for colocado será uma nova opção no menu

Grande abraço!

Crie no bean uma lista de SelectItem com os dados que tu quer no SelectOneMenu, e na pagina, dentro do SelectOneMenu coloque

 <f:selectItems value="#{seuBean.suaLista}" />

Lembrando que a lista precisa do get respectivo.

[quote=jaziel.rc]Crie no bean uma lista de SelectItem com os dados que tu quer no SelectOneMenu, e na pagina, dentro do SelectOneMenu coloque

 <f:selectItems value="#{seuBean.suaLista}" />

Lembrando que a lista precisa do get respectivo.

[/quote]
meu mbean


@Model
@SessionScoped
public class ProjectMB implements Serializable  {
	@Inject
	private ProjectRepository projectRepository;

	private Project project = new Project();

	private List<Project> projects;

	public void save() {
		if (this.getProject().getId() == null) {
			this.projectRepository.add(this.getProject());
		} else {
			this.projectRepository.edit(this.getProject());
		}
		this.project = new Project();
		this.projects = null;
	}

	public void delete(Long id) {
		this.projectRepository.removeById(id);
		this.projects = null;
	}

	public void prepareEdit(Long id) {
		this.project = this.projectRepository.findById(id);
	}

//GETTERS e SETTERS

minha pagina:

<h1>Project List</h1>
	<h:dataTable value="#{projectMB.projects}" var="project"
		rendered="#{not empty projectMB.projects}" border="1">
		<h:column>
			<f:facet name="header">Id</f:facet>
 #{project.id}
 </h:column>

		<h:column>
			<f:facet name="header">Name</f:facet>
 #{project.name}
 </h:column>

		<h:column>
			<f:facet name="header">Description</f:facet>
 #{project.description}
 </h:column>

não consigo ver a listagem de projects.
alguma ideia, alguém?

você preencheu esta lista ?

pois é.
como faria?
estou usando um form para preencher mas salva no banco e não retorna na página.

meu sessionbean:

[code]package sessionbeans;

import java.util.List;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import entities.Bug;
import entities.Project;

@Stateless
public class ProjectRepository {

@PersistenceContext
private EntityManager manager;

public void add(Project project) {
	this.manager.persist(project);
}

public void edit(Project project) {
	this.manager.merge(project);
}

public void removeById(Long id) {
	Project project = this.manager.find(Project.class, id);

	TypedQuery<Bug> query = this.manager.createQuery(
			"select x from Bug x where x.project_id = :project", Bug.class);
	query.setParameter("project", project);
	List<Bug> bugs = query.getResultList();
	for (Bug bug : bugs) {
		this.manager.remove(bug);
	}

	this.manager.remove(project);
}

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public List<Project> findAll() {
	TypedQuery<Project> query = this.manager.createQuery(
			"select x from Project x", Project.class);
	return query.getResultList();
}

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public Project findById(Long id) {
	return this.manager.find(Project.class, id);
}

public EntityManager getManager() {
	return manager;
}

public void setManager(EntityManager manager) {
	this.manager = manager;
}

}
[/code]

consegui preencher a lista fazendo isso no meu bean:

public List<Project> getProjects() {
		if (this.projects == null) {
			this.projects = this.projectRepository.findAll();
		}
	
		return projects;
	}

mas agora na hora de preencher/salvar um campo dá o seguinte erro:

[code] <h:panelGrid>
<h:inputHidden value="#{bugMB.bug.id}" />

		<h:outputLabel value="Severity:" />
		<h:selectOneMenu value="#{bugMB.bug.severity}">
			<f:selectItem itemValue="LOW" />
			<f:selectItem itemValue="MEDIUM" />
			<f:selectItem itemValue="HIGH" />
		</h:selectOneMenu>


		<h:outputLabel for="description" value="Description:" />
		<h:inputTextarea id="description" value="#{bugMB.bug.description}" />

		<h:outputLabel for="selecaoProjeto" value="Project:" />
		
		<h:selectOneMenu id="selecaoProjeto" value="#{bugMB.projectRepository}">			
			<f:selectItems value="#{projectMB.projects}" var="project"
				itemLabel="#{project.description}" itemValue="#{project}"/>
		</h:selectOneMenu>

		<h:commandButton action="#{bugMB.save}" value="Save" />
	</h:panelGrid>[/code]

Nunca me deparei com isso, mas acredito que o problema está ao gerar a lista, gera esta lista manualmente para ver se o SelectOneMenu é preenchido.

A lista já gerei manualmente.
consigo mostrar no selectonemenu.
mas na hora de salvar essas informaçoes dá o erro de cast, como se meu mbean nao reconhecesse