Pessoal,
implentei “Converter” para fazer a conversão de um campo ID e estou recebendo a mensagem abaixo:
sourceId=frmManutencao:idImpressora[severity=(ERROR 2), summary=(frmManutencao:idImpressora: Erro de validação: o valor não é válido), detail=(frmManutencao:idImpressora: Erro de validação: o valor não é válido)]
Verifiquei no fonte do html e a rendererização está correta (os códigos dos IDs <option value…=“29”) estão corretos). Estou debugando e a conversão aparentemente deveria estar ocorrendo, mas após a execução dos métodos abaixo vem a mensagem “…o valor não é válido…”.
        <h:selectOneMenu id="idImpressora" value="#{controller.trocaToner.impressora}" converter="conversorIdImpressora" required="true" requiredMessage="Impressora é obrigatória" styleClass="inputRequerido">
          <f:selectItem itemLabel="-- Selecione uma impressora --" itemValue="-1"/>                          
          <f:selectItems value="#{controller.serialModelo}" var="item" itemLabel="#{item.numeroSerial}" itemValue="#{item.idImpressora}" /> 
        </h:selectOneMenu>  
Aonde “controller.trocaToner.impressora” é um atributo “ManyToOne”
@Entity(name="trocatoner")
@Table(name="tb_trocatoner")
public class TrocaToner {
	
	public TrocaToner() {
		
	}
	
	public TrocaToner(int idTrocaToner, Impressora impressora, Date dataTroca) {
		this.idTrocaToner = idTrocaToner;
		this.impressora = impressora;
		this.dataTroca = dataTroca;
	}
	
	@ManyToOne
	@JoinColumn(name="id_impressora")	
	private Impressora impressora;
...
A classe de conversão segue aí:
[code]
public class ConversorIdImpressora implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
	Object retorno = null;
	
	if ( value == null | value.length() == 0 ) return retorno;
	
	try {
		retorno = value;
	}
	catch (ConverterException e) {
		System.err.println("Erro de conversão: " + e.getMessage());
	}
	return retorno;	
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
	String retorno = "";
	
	if ( value == null ) return retorno;
	
	try {
		retorno = value.toString();
	}
	catch (ConverterException e) {
		System.err.println("Erro de conversão: " + e.getMessage());
	}
	return retorno;	
}
}[/code]
Alguém pode ajudar?