Problemas com converter e selectOneMenu [RESOLVIDO]

6 respostas
honjoya

Bom dia galera…

Estou aprendendo JSF para o desenvolvimento do meu TCC, porem estou tendo problemas com o meu cadastro onde alimentei um selectOneMenu com uma lista de estados.. até a exibição na tela fica correto.. quando vejo o Html fica certinho....
<select>
  <option value="1">São Paulo</option>
  <option value="2">Rio de Janeiro</option>
  <option value="3">Parana</option>
  <option value="4">Santa Catarina</option>
</select>

porem quando eu adiciono o converter ele bagunça meu codigo…

<h:selectOneMenu  value="#{instituicao.estadoSelected}">  
        <f:selectItems var="states" value="#{instituicao.estados} converter="estado" 
        itemValue="#{states.id}" itemLabel="#{states.nome}"/>  
</h:selectOneMenu>

o codigo html do select perde o identificador de value que seria o id de cada estado no banco, assim não consigo realizar a conversão do id para o objeto estado no converter.

<select>
  <option value="estado">São Paulo</option>
  <option value="estado">Rio de Janeiro</option>
  <option value="estado">Parana</option>
  <option value="estado">Santa Catarina</option>
</select>

Alguma solução? é estranho isso…

Agradecido

6 Respostas

cbs_sp

Coloca o ManagedBean para agente dar uma olhada.

honjoya

este seria o resumo do bean… onde no construtor realizo a busca dos estados com o Hibernate na Dao de estados e retorna a lista com todos os estados…

class InstituicaoController{

	private String nome.
	private List<Estado> estados = new List<Estado>();
	private Estado estadoSelected;
	...

	public InstituicaoController(){
		this.estados = EstadoDao.listEstados();
	}
	
	...
}
R

Não prefere usar um converter genérico?Assim vc n precisa implementar um para cada entidade.

http://www.rponte.com.br/2008/07/26/entity-converters-pra-da-e-vender/

honjoya

Vou ler o sugerido… qualquer coisa volto a postar… obrigado

cbs_sp

Na verdade o que eu queria ver, era o converter, entretanto segue um exemplo sem converter:

Bean:

@ManagedBean
@ApplicationScoped
public class MeuBean {
  private EstadosProvider provider = new EstadosProvider();
  private SelectItem[] estados;
  
  public SelectItem[] getEstados() {
	  
	  if(estados==null){
		  estados = new SelectItem[3];
		  List<EstadosProvider> items = provider.getEstados();
		  int i = 0;
		  for (Iterator iterator = items.iterator(); iterator.hasNext();) {
			  EstadosProvider estadosProvider = (EstadosProvider) iterator
					  .next();
			  estados[i] = new SelectItem(estadosProvider.getId(),estadosProvider.getNome());
			  i++;
		  }
	  }
	  return estados;
  }
  
  private String estadoSelec;
  
  public String getEstadoSelec() {
	  return estadoSelec;
  }

  public void setEstadoSelec(String estadoSelec) {
	  this.estadoSelec = estadoSelec;
  }

  public String selecionar() {
	  return("pagina1");
  }


}

pagina1:

<h:head><title>Teste Estado</title>
</h:head>
<h:body>
<div align="center">
<h1>Selecione o estado:</h1>
		<h:form id="meu-form">
		
			<h:selectOneListbox id="estado" size="1"
				value="#{meuBean.estadoSelec}">
				<f:selectItems value="#{meuBean.estados}" var="e"
					itemLabel="#{e.label}" itemValue="#{e.value}" />
			</h:selectOneListbox>
			<h:commandButton value="Selecionar" action="#{meuBean.selecionar}" />
		</h:form>

	</div></h:body></html>

pagina2:

<h:head><title>Estado Selecionado</title>
</h:head>
<h:body>
<div align="center">
<h1>Estado Selecionado:</h1>

#{meuBean.estadoSelec}

</div></h:body></html>

[]s

honjoya

Obrigado pela ajuda… o problema era no retorno do converter.

Criado 20 de julho de 2011
Ultima resposta 20 de jul. de 2011
Respostas 6
Participantes 3