JSF Null Converter

0 respostas
paulofernandesjr

opa

galera o erro que apresenta é este:

Conversion Error setting value '3' for 'null Converter'.
Minha classe EstadoConverter
package br.com.school.chasecontrol.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

import br.com.school.chasecontrol.bean.EstadoBean;
import br.com.school.chasecontrol.dao.EstadoDAO;

/**
 * Classe responsavel por retornar um conversor de estado
 * @author ebarros
 *
 */
public class EstadoConverter implements Converter {
	
	public final static String CONVERTER_ID = "br.com.school.chasecontrol.bean.EstadoBean"; //path dos beans da classe Estado  

	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		System.out.println("Object: " + value);
		try {  
			if (value == null || value.equalsIgnoreCase("-1") ) {
				return null;
			}
			Integer id = new Integer(value);              
			return new EstadoDAO().buscarEstadoPorId(id);  
		} catch (NumberFormatException ne) {  
			throw new ConverterException("Não foi possível converter (" + value + ") para Estado: não é um número inteiro.", ne);  
		} catch (IllegalArgumentException e){  
			throw new ConverterException("Não foi possível converter (" + value + ") para Estado: identificador desconhecido.", e);  
		} 
	}

	public String getAsString(FacesContext context, UIComponent component, Object value) {
		System.out.println("String: " + value);
		if (value == null)  
			return null;  
		if (value instanceof EstadoBean) {  
			EstadoBean aux = (EstadoBean) value;  
			return aux.getCodEstado().toString();  
		} else if(value instanceof String && ((String)value).equalsIgnoreCase("-1")) {  
			return "-1";  
		} else {   
			throw new ConverterException("(" + value.getClass() + ") não é uma instância.");  
		}    
	}
	
}
Meu HTML
<h:outputLabel value="Estado" for="estado" />
						<h:selectOneMenu id="estado" value="#{controleAluno.estado}" converter="#{br.com.school.chasecontrol.converter.EstadoConverter}">  
							<f:selectItems value="#{controleAluno.listaEstados}" />  
						</h:selectOneMenu>
A classe DAO
package br.com.school.chasecontrol.dao;

import java.util.ArrayList;
import java.util.List;

import br.com.school.chasecontrol.bean.EstadoBean;

/**
 * Classe responsavel por armazenar as operações de persistencia do sistema 
 * @author Paulo Fernandes
 *
 */
public class EstadoDAO {
	
	/**
	 * metodo responsavel por trazer a lista de estados
	 * @return
	 */
	public List<EstadoBean> getEstados() {
		List<EstadoBean> lista = new ArrayList<EstadoBean>();
		
		EstadoBean estado1 = new EstadoBean();
		estado1.setCodEstado(1);
		estado1.setSiglaEstado("SP");
		lista.add(estado1);
		
		EstadoBean estado2 = new EstadoBean();
		estado2.setCodEstado(2);
		estado2.setSiglaEstado("RJ");
		lista.add(estado2);
		
		EstadoBean estado3 = new EstadoBean();
		estado3.setCodEstado(3);
		estado3.setSiglaEstado("RS");
		lista.add(estado3);
		
		EstadoBean estado4 = new EstadoBean();
		estado4.setCodEstado(4);
		estado4.setSiglaEstado("SC");
		lista.add(estado4);
		
		return lista;
	}
	
	/**
	 * metodo responsavel por retornar um estado a partir do seu codigo
	 * @param id
	 * @return
	 */
	public Object buscarEstadoPorId(Integer id) {
		EstadoBean estado = new EstadoBean();
		estado.setSiglaEstado("SP");
		estado.setCodEstado(id);
		return estado;
	}
	
	
	
}
Criado 5 de março de 2009
Respostas 0
Participantes 1