SelectOneMenu erro de casting ao setar o valor no bean

Pessoal, por favor me ajudem.
Tenho um SelectOneMenu e quero pegar o valor dele…estou fazendo assim…me ajudem…

xhtml

Bairro: <h:selectOneMenu value="#{pizzariaTO.bairro}" tittle="Selecione seu bairro!">
                    					<f:selectItem itemLabel="Morumbi" value="morumbi"/>
                    					<f:selectItem itemLabel="Interlagos" value="interlagos"/>
                    					<f:selectItem itemLabel="Brooklin" value="brooklin"/>
                    				</h:selectOneMenu>
                    				<br/><br/>

Bean

public class PizzariaTO {

	private String nome;
	private String telefone;
	private String bairro;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
}

O erro que está dando é:

exception 

javax.servlet.ServletException: java.lang.String cannot be cast to javax.faces.model.SelectItem
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

Valeu galera

substitui o atributo value por itemValue

1 curtida

Não é value… mas sim itemvalue…

Exemplo:

<f:selectItem itemLabel="Morumbi" itemValue="morumbi"/> 

Falows…

1 curtida

Tiburcio e Carlos, valeu pela resposta.

O que acontece é o seguinte:

Eu acho que o que está errado é o <h:selectOneMenu value="#{pizzariaTO.bairro}" pois esta propriedade de Bean é String e precisava ser SelectItem certo? Se positivo, a questão é, como faço para passar um SelectItem para String.

Valeuu…

Abss

vc acha?

vc não vai ao menos testar a solução que foi passada?

Tiburcio, o erro que está dando é de conversão (casting) de SelectItem para String, por isso que falo que “ACHO” que não é isso, e também está aqui nesse site (http://www.roseindia.net/jsf/selectOneMenu.shtml) como referencia da onde tirei o comando.

Agradeço as respostas meu velho.

Testar eu vou, mas no momento não posso, estou no trabalho.

Valeu!!

ABss

o exemplo do roseIndia que vc viu esta assim:

<h:form> <h:selectOneMenu id="som" value="TableBean.perInfoAll" title="select any one in this menu"> <f:selectItem id="si1" itemLabel="Thums Up" itemValue="11" /> <f:selectItem id="si2" itemLabel="Limca" itemValue="22" /> <f:selectItem id="si3" itemLabel="Pepsi" itemValue="33" /> <f:selectItem id="si4" itemLabel="Sprite" itemValue="44" /> <f:selectItem id="si5" itemLabel="Frooti" itemValue="55" /> <f:selectItem id="si6" itemLabel="Coca-Cola" itemValue="66" /> </h:selectOneMenu>

esta itemValue não value.

O melhor é consultar a documentação oficial, que diz que a opção itemValue:

“Valor a ser devolvido para o servidor se essa opção for selecionada pelo usuário”.

o atributo value devolverá um objeto selectItem, por isso que da o seu erro.

aqui o link para vc consultar:

http://download.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/

Muito Obrigado Tiburcio, eu verifiquei e vi que estava errado mesmo.

Agora chagamos no mesmo ponto, o que eu não estou conseguindo é fazer o casting. Na verdade eu não sei como faço, se coloco a pripriedade do meu Bean como selectItem e jogo para outra variavel covertendo ou se faço de outro jeito.

Valeuuuu…

Abs

mas cara, vc ta complicando,rsrs

no seu bean vc coloca uma String simples e vc usa o atributo itemValue no f:selectItem…

Bairro: <h:selectOneMenu value="#{pizzariaTO.bairro}" tittle="Selecione seu bairro!"> <f:selectItem itemLabel="Morumbi" itemValue="morumbi"/> <f:selectItem itemLabel="Interlagos" itemValue="interlagos"/> <f:selectItem itemLabel="Brooklin" itemValue="brooklin"/> </h:selectOneMenu> <br/><br/>

e o bean continua como vc postou:

[code]public class PizzariaTO {

private String nome;  
private String telefone;  
private String bairro;  
  
public String getNome() {  
    return nome;  
}  
public void setNome(String nome) {  
    this.nome = nome;  
}  
public String getTelefone() {  
    return telefone;  
}  
public void setTelefone(String telefone) {  
    this.telefone = telefone;  
}  
public String getBairro() {  
    return bairro;  
}  
public void setBairro(String bairro) {  
    this.bairro = bairro;  
}  

}
[/code]

Ahhhh…poxa…

O que eu achei que fosse era um erro de casting pq quando eu coloquei essa linha

 Bairro: <h:selectOneMenu value="#{pizzariaTO.bairro}" tittle="Selecione seu bairro!">  

No lugar do value eu teria que colocar uma variavel do tipo SelectItem e não String… mas se vc está falando que funciona com uma String e é só mudar para ItemValue, vou fazer hoje a noite e te passo.

Valeuuuu…

Absss