JSF - consultar no banco e exibir no <f:SelecteItems />

2 respostas
anderson.bonavides

Pessoal não agüento mais pesquisar. Não sei oq faço de errado.
:(
Estou querendo consultar no banco de dados e exibir em um SelecteItems.

Meu Managed Bean:

public class UsuarioMB {
	
	private String nome;
	private String telefone;
	private String email;
	private String login;
	private String senha;
	private String tipo;
	private Usuario user;
	
	private ArrayList<SelectItem> todosUser;
	...
	...
	...
	public List<SelectItem> getTodosUser() {
		todosUser = new ArrayList<SelectItem>();
		UsuarioBusiness ub = new UsuarioBusiness();
		List<SelectItem> usuario = new ArrayList<SelectItem>();
		usuario = ub.listarUsuario();
		for (SelectItem selectItem : usuario) {
			usuario.add(new SelectItem(new Integer(user.getId()), user.getNome()));
		}
		
		return todosUser;
	}
}
Minha classe Business
public List<SelectItem> listarUsuario() {
		usuarioDAO = new UsuarioDAO();
		List<SelectItem> retorno = new ArrayList<SelectItem>();
		retorno = usuarioDAO.listarUsuario();
		return retorno;
	}

Minha classe Dao

public List<SelectItem> listarUsuario() {
		EntityTransaction transaction = manager.getTransaction();
		List<SelectItem> retorno = null;
		try {
			Query query = manager.createQuery("SELECT u FROM Usuario u");
			retorno = (List<SelectItem>) query.getResultList();
		} catch (Exception e) {
			transaction.rollback();
			System.err.println("Erro: " + e.getMessage());
		} finally {
			manager.close();
		}
		return retorno;
	}

Meu SelecteItems

<h:selectOneListbox value="#{projeto.project.nomeCliente}">
							<f:selectItems value="#{usuario.todosUser}" /> 
						</h:selectOneListbox>

É gerado um erro no foreach do managed beam. Alguem tem alguma dica?

Grato.

2 Respostas

Naruffy

se eu não me lembro o indice do selec item tem q ser String

entaum tenta colocar assim

usuario.add(new SelectItem(String.valueOf(user.getId()), user.getNome()));

anderson.bonavides

Narufy resolvido.
Obrigado

Tive que fazer algumas modificações e agora ficou assim.

public List<SelectItem> getTodosUser() { todosUser = new ArrayList<SelectItem>(); UsuarioBusiness ub = new UsuarioBusiness(); List<Usuario> usuario = ub.listarUsuario(); usuario = ub.listarUsuario(); for (Usuario user : usuario){ todosUser.add(new SelectItem(new Integer(user.getId()), user.getNome())); } return todosUser; }

Criado 7 de junho de 2008
Ultima resposta 7 de jun. de 2008
Respostas 2
Participantes 2