1
resposta

Tratameto de erros

como fazer o devido tratamento de erros no converter caso eu passe alguma data inválida?

1 resposta

Olá Rebecca, tudo bem?

No tratamento de erros em um converter, você pode utilizar a classe FacesMessage do JSF para exibir uma mensagem de erro ao usuário caso ele insira uma data inválida. Você pode fazer isso utilizando um bloco try-catch dentro do método getAsObject() do seu converter.

Por exemplo, suponha que você tenha um converter para converter uma String em um objeto do tipo Date. Dentro do método getAsObject(), você pode utilizar o bloco try-catch para capturar uma exceção caso a data seja inválida. Dentro do bloco catch, você pode criar uma mensagem de erro utilizando a classe FacesMessage e adicioná-la ao contexto do JSF utilizando o método addMessage() da classe FacesContext.

Aqui está um exemplo de como fazer isso:

public class DateConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        try {
            // Converter a String em um objeto Date
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            Date date = sdf.parse(value);
            
            return date;
        } catch (ParseException e) {
            // Data inválida, criar uma mensagem de erro
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Data inválida", "Por favor, insira uma data válida.");
            context.addMessage(null, message);
            
            return null;
        }
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        // Converter o objeto Date em uma String
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        String dateStr = sdf.format((Date) value);
        
        return dateStr;
    }

}

Dessa forma, caso o usuário insira uma data inválida, uma mensagem de erro será exibida na página.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software