Não aparece o conteudo do f:selectItems JSF

Não está aparecendo o conteudo das caixas de seleção Múltiplas.

[img]

http://localhost:8080/JSF01/conversor-monetario.xhtml

[/img]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"  
 	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">
<h:head>
	<title>Conversor Monetario</title>
</h:head>
<h:body>

	<h:form>
		<h:commandButton value="Converter" action="#{conversorMonetarioBean.converte}"/>

		<h:inputText value="#{conversorMonetarioBean.valor}"/>
		
		<h:outputLabel value="de" for="de"/>

		<h:selectOneMenu value="#{conversorMonetarioBean.de}" id="de">
			<f:selectItems value="#{conversorMonetarioBean.taxas.keySet()}" var="moeda" itemValue="#{moeda}" itemLabel="#{moeda}"/>
		</h:selectOneMenu>

		<h:outputLabel value="para" for="para"/>

		<h:selectOneMenu value="#{conversorMonetarioBean.para}"	id="para">
			<f:selectItems value="#{conversorMonetarioBean.taxas.keySet()}"	var="moeda" itemValue="#{moeda}" itemLabel="#{moeda}"/>
		</h:selectOneMenu>
	</h:form>

	 Resultado :#{conversorMonetarioBean.resultado}
	
	
</h:body>
</html>

import java.util.LinkedHashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class ConversorMonetarioBean {
	private String de;
	private String para;
	private Double valor;
	private Double resultado;

	private Map<String, Double> taxas = new LinkedHashMap<String, Double>();

	public ConversorMonetarioBean() {
		this.taxas.put("Real", 1.0);
		this.taxas.put("Euro", 2.33);
		this.taxas.put("Peso argentino", 0.42);
		this.taxas.put("Dólar americano", 1.84);
	}

	public void converte() {
		this.resultado = this.valor * this.taxas.get(this.de)
				/ this.taxas.get(this.para);
	}

	public String getDe() {
		return de;
	}

	public void setDe(String de) {
		this.de = de;
	}

	public String getPara() {
		return para;
	}

	public void setPara(String para) {
		this.para = para;
	}

	public Double getValor() {
		return valor;
	}

	public void setValor(Double valor) {
		this.valor = valor;
	}

	public Double getResultado() {
		return resultado;
	}

	public void setResultado(Double resultado) {
		this.resultado = resultado;
	}

	public Map<String, Double> getTaxas() {
		return taxas;
	}

	public void setTaxas(Map<String, Double> taxas) {
		this.taxas = taxas;
	}

}

Olá, acho que você deveria utilizar o itemDescription, ao invés de itemLabel. (Esquece, deveria funcionar com o Label, mesmo…)

Aonde estão os atributos na linha 19 da view?
E da linha 25?

[quote=leorbarbosa]Aonde estão os atributos na linha 19 da view?
E da linha 25?[/quote]

Pelo que eu entendi, a variável taxas está na linha 13 do MB.

O keySet() retorna uma lista com as Strings do HashMap, a “var” é a variável que percorre cada String… Deveria funcionar… :roll:

Amigo, não consigo encontrar erro nenhum.

Só por desencargo de conciência, você não quer tentar alterar o escopo desse MB, não? Tipo, para session ou view?

[quote=linngallo]Amigo, não consigo encontrar erro nenhum.

Só por desencargo de conciência, você não quer tentar alterar o escopo desse MB, não? Tipo, para session ou view?[/quote]Não creio que o tipo do escopo seja o problema. Mas creio que seja o fato que você sitou, de o retorno do método ser keySet().

[quote=jakefrog][quote=linngallo]Amigo, não consigo encontrar erro nenhum.

Só por desencargo de conciência, você não quer tentar alterar o escopo desse MB, não? Tipo, para session ou view?[/quote]Não creio que o tipo do escopo seja o problema. Mas creio que seja o fato que você sitou, de o retorno do método ser keySet().[/quote]

Faz sentido. O ideal mesmo é criar uma List<SelectItens>. E usar o get para pegara a lista. Não tem erro. =]

Postei um exemplo de como carregar um select

veja se te ajuda

Bom dia, Amigos

Agradeço pela atenção

Como faria?

é estou aprendendo ainda.

Aquele post que eu te passei tem como fazê-lo, e neste também, que inclusive está sendo hoje a dúvida da pessoa.

Obrigado!!! galera consegui valeu mesmo.