JSF SelectOneMenu sempre retorna NULL

4 respostas
E

Pessoal… tenho meu Bean:

public class Test {

private String state;

private String city;

private Map statesMap = new HashMap();

public String getCity() {
	return city;
}

public void setCityString city) {
	this.city = city;
}

public String getState() {
	return state;
}

public void setState(String state) {
	this.state = state;
}

public Map getStatesMap() {
	statesMap.put("SP", "SP");
	statesMap.put("RJ", "RJ");
	statesMap.put("AC", "AC");
	statesMap.put("AL", "AL");
	return statesMap;
}

public void setStatesMap(Map statesMap) {
	this.statesMap = statesMap;
}

public String getValues() {
	System.out.println(getCity());
	System.out.println(getState());
	return null;
}

e na JSP:

<h:selectOneMenu value="#{test.state}">
<f:selectItems value="#{test.statesMap}" />
</h:selectOneMenu>

<h:commandButton value="#{msg.ok}" action="#{test.getValues}" immediate=“true”></h:commandButton>

o comboBox é populado perfeitamente, mas quando clico no botão, sempre retorna NULL em tudo. Em outras páginas sem SelectOne, funciona perfeitamente. Mas com SelectOne, tudo começa a retornar NULL

Estou um tempão com este problema e não descubro o que fiz de errado…

4 Respostas

marcosbrandao

Eric Yuji

Cara, nao tenho muita certeza do que vou te dizer aqui, lli uma vez em um artigo que o tratamento com HashMap em um selectOneMenu e diferente, tentei achar o artigo mas nao consegui para confirmar a afirmação. Mas faz um teste ai, ao inves de ser um HashMap coloca um Array de SelectItem, assim:

private SelectItem[] tipoPessoa;

public SelectItem[] getTipoPessoap() { 
    tipoPessoa[0] = new SelectItem("SP", "SP"); 
    tipoPessoa[1] = new SelectItem("RJ", "RJ"); 
    tipoPessoa[2] = new SelectItem("AC", "AC"); 
    tipoPessoa[3] = new SelectItem("AL", "AL"); 
return tipoPessoa; 
}

Muda teus outros metodos get e set.
Se nao funcionar tenta tirar o value do SelectOneMenu.

E

Valeu Marcos, mas eu já havia tentado e ocorre o mesmo problema.

Fiz:

private SelectItem[] stateItems = {

new SelectItem(SP, SP),

new SelectItem(RJ, RJ),

new SelectItem(MG, MG) };
public SelectItem[] getStateItems() {
	return stateItems;
}

public void setStateItems(SelectItem[] stateItems) {
	this.stateItems = stateItems;
}

O combo popula perfeitamente, mas só retorna NULL.
Ao invés de … Map = new HashMap(); … usei tb TreeMap e nada.

Esse negócio tá me deixando de cabelo em pé

marcioa1

Eric,

Isto acontece comigo também. Tenho vários combos com ano, e todos estão “hardcoded”, pois consigo popular com SelectItem, mas sempre retorna null. Não sei o porquê.

Márcio

E

Finalmente!!!

Marcio… deixa teus SelectOnes com immediate=“true”.

UFA!!!
Abraços

Criado 16 de janeiro de 2007
Ultima resposta 16 de jan. de 2007
Respostas 4
Participantes 3