Não consigo carregar o h:selectOneMenu no jsf 2.0

8 respostas
caio_sope

Pessoal. Andei olhando uns tópicos sobre como utilizar o selectOneMenu dinamico, onde os itens vem de uma propriedade no managed bean.

Encontrei a seguinte solução: Colocar os item em um List e depois colocar o código na página assim:

<h:selectOneMenu id="selectMarca" value="#{cadastroCarros.marca}"> <f:selectItems value="#{cadastroCarros.selectMarcas}"/> </h:selectOneMenu>

Porém não sei pq não está carregando o combo. Eu dei um System.out.println() no construtor do bean, e mostra que a List está carregada corretamente. Porém os valores não carregam no select.

O que pode estar acontecendo?

Valeu!

8 Respostas

drsmachado

Esse elemento não suporta List.
Você precisa converter para array de String.

G

drsmachado:
Esse elemento não suporta List.
Você precisa converter para array de String.

como assim não suporta List?

<h:selectOneMenu id="characters"
				value="#{charactersMB.selectedCharacter}"
				converter="charactersConverter">
				<f:selectItem itemLabel="Selecione o char" itemValue="" />
				<f:selectItems value="#{charactersMB.list}" var="character"
					itemLabel="#{character.charName}" itemValue="#{character}" />
			</h:selectOneMenu>

bean:

@ManagedBean
@ViewScoped
public class CharactersMB {
	private Characters selectedCharacter;

	public Characters getSelectedCharacter() {
		return selectedCharacter;
	}

	public void setSelectedCharacter(Characters selectedCharacter) {
		this.selectedCharacter = selectedCharacter;
	}

	public List<Characters> getList() {
		try {
			Connection connection = ConnectionFactory.getInstance();
			try {
				CharactersDAO dao = new CharactersDAO(connection);
				UserMB myUser = (UserMB) MySession
						.getMB("userMB", UserMB.class);
				return dao.find(myUser.getAcc());
			} catch (SQLException e) {
				MessageFactory.setMessage(
						"Erro ao listar os chars" + e.getMessage(),
						"criticalError");
				return null;
			} finally {
				connection.close();
			}
		} catch (SQLException e) {
			MessageFactory.setMessage(
					"Erro ao estabelecer conexao para listar os chars"
							+ e.getMessage(), "criticalError");
			return null;
		}
	}
}

funciona aqui perfeitamente. 8)

caio_sope

Mas com array de String eu não consigo colocar o value e o label das opções.

Não tem como fazer isso?

caio_sope

Tentei deste segundo jeito e tb não funcionou aqui..

Estou só fazendo um projetinho simples pra treinar. O código é este:

<h:selectOneMenu id="selectMarca" value="#{cadastroCarros.marca}">
		<f:selectItems value="#{cadastroCarros.selectMarcas}" var="marcaSelect"
		itemLabel="#{marcaSelect.label}" itemValue="#{marcaSelect.value}"/>
	</h:selectOneMenu>

ManagedBean:

public class CadastroCarros {

	private String modelo;
	private List<Marca> marcas;
	private List<SelectItem> selectMarcas;
	private Marca marca;
	private String ano;
	private String cor;
	private String placa;
	
	public CadastroCarros(){
		
		this.marcas = MarcaDAO.getTodasMarcas();
		this.selectMarcas = new ArrayList<SelectItem>();
	
		for(Marca marca: this.marcas){
			
			SelectItem selectItem = new SelectItem();
			selectItem.setValue(marca.getId());
			selectItem.setLabel(marca.getNome());
			selectMarcas.add(selectItem);
			
		}
						
	}

Alguma idéia do que pode ser?

jmag

<h:selectOneMenu value="#{CtrlQualquer.idLongQualquer}" onchange="this.form.submit();"> <f:selectItems value="#{CtrlQualquer.listaQualquer}" var="idQ" itemLabel="#{idQ.nome}" itemValue="#{idQ._qualquer_coisa}"></f:selectItems> </h:selectOneMenu>

caio_sope

Aparentemente tá igual né?
Tem que configurar alguma coisa?

G

tanto o seu bean quanto o selectOneMenu estão errados, repare que você não deve passar diretamente o valor e sim o objeto selecionado e para isso você precisará de um converter que não vejo vc informar no seu selectOneMenu.

jmag

Acho aqui esse post te ajuda http://www.guj.com.br/java/244135-duvida-resolvido#1263169

[]s

Criado 25 de julho de 2011
Ultima resposta 25 de jul. de 2011
Respostas 8
Participantes 4