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
<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>
@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;
...
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;
}
}
Alguém pode ajudar?