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?