Olá... conforme foto (http://prntscr.com/n60rc1) não está setando o Pattern. O código está igual ao da aula. Porém só funciona se eu mantenho as configurações no xhtml.
Segue código:
package br.com.casadocodigo.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;
@FacesConverter(forClass=Calendar.class)
public class CalendarConverter implements Converter {
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;
return converter.getAsString(context, component, calendar.getTime());
}
}
xhtml do form:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:body>
<div>
<h:form>
<div>
<!-- Ex : Opção de validação por xhtml (tag inputText):
requiredMessage="O Título é um campo obrigatório!!!" -->
<h:outputLabel value="Título: " />
<h:inputText value="#{adminLivrosBean.livro.titulo}" required="true" id="titulo"/>
<h:message for="titulo"/>
</div>
<div>
<h:outputLabel value="Descrição: " />
<h:inputTextarea rows="4" cols="20" required="true" value="#{adminLivrosBean.livro.descricao}" id="descricao" />
<h:message for="descricao"/>
</div>
<div>
<h:outputLabel value="Número de Páginas: " />
<h:inputText value="#{adminLivrosBean.livro.numPaginas}"
required="true" id="numPaginas" />
<h:message for="numPaginas"/>
</div>
<div>
<h:outputLabel value="Preço: " />
<h:inputText value="#{adminLivrosBean.livro.preco}"
required="true" id="preco">
<!-- <f:validateDoubleRange minimum="0.0" maximum="2000.0" /> validação por xhtml-->
</h:inputText>
<h:message for="preco"/>
</div>
<div>
<h:outputLabel value="Autores: " />
<h:selectManyListbox value="#{adminLivrosBean.autoresId}" converter="javax.faces.Integer">
<f:selectItems value="#{adminLivrosBean.autores}" var="autor"
itemValue="#{autor.id}" itemLabel="#{autor.nome}" id="autor"/>
</h:selectManyListbox>
<h:message for="autor"/>
</div>
<div>
<h:outputLabel value="Data de Publicação" />
<h:inputText value="#{adminLivrosBean.livro.dataPublicacao.time}" id="dataPublicacao" />
<h:message for="dataPublicacao"/>
</div>
<h:commandButton value="Cadastrar" action="#{adminLivrosBean.salvar}" />
</h:form>
</div>
</h:body>
</html>