3
respostas

CalendarConverter

depois de implementar o CalendarConverter não consigo mais gravar um registro... não retorna mensagem de erro, qdo clico em gravar aparecem só selects do Hibernate

package br.com.casadocodigo.loja.converters;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.DateTimeConverter;
import javax.faces.convert.FacesConverter;

//Quando a informação está na tela, ela é uma String, nesse ponto o JSF chama o método getAsString() 
//do nosso Converter. Quando está no ManagedBean é um Objeto que queremos, desta forma o JSF chama o método getAsObject().

@FacesConverter(forClass = Calendar.class) // conversor JSF, e qual tipo de dados converterá
public class CalendarConverter implements Converter {// implementa classe q contêm os métodos de conversão

    private DateTimeConverter converter = new DateTimeConverter();

    public CalendarConverter() {
        converter.setPattern("dd/MM/yyyy");
        converter.setTimeZone(TimeZone.getTimeZone("America/Sao_Paulo"));
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String dataTexto) {
        Date data = (Date) converter.getAsObject(context, component, dataTexto);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(data);
        return calendar;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object dataObject) {
        if (dataObject == null) {
            return null;
        }
        Calendar calendar = (Calendar) dataObject;
        String asString = converter.getAsString(context, component, calendar.getTime());
        return asString;
    }

}
3 respostas
<div>
        <h:outputLabel value="Data de Publicação" />
        <h:inputText value="#{adminLivrosBean.livro.dataPublicacao}" id="data">
        <!-- <f:convertDateTime pattern="dd/MM/yyyy hh:mm" timeZone="America/Sao_Paulo"/> -->
            <h:message for="data" />
        </h:inputText>
    </div>

    <h:commandButton value="Cadastrar" action="#{adminLivrosBean.salvar}" />

oi, podem desconsiderar, era uma validação de campo.

Boa noite, Aline! Como vai?

Vc poderia compartilhar com a gente como conseguiu resolver para o caso de algum aluno passar pelo mesmo problema no futuro?

Grande abraço e bons estudos!