2014-05-19 38 views
0

最近我用JSF创建了一个应用程序,我相信这是一切正常的代码行。有人可以帮助我吗?我不知道该在哪里找出错误。我的转换JSF不起作用

<h:outputLabel value="Data de Checagem" /> 
      <h:panelGroup> 
       <h:inputText id="dataChecagem" 
        value="#{estoqueBean.itemEstoque.dataChecagem}" 
        label="Data de Checagem" converter="com.algaworks.SmartDate"/>     
       <h:message for="dataChecagem" showSummary="true" showDetail="false" /> 
      </h:panelGroup> 

这是我的同班同学转换

package com.algaworks.cursojsf2.converter; 

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

import javax.faces.application.FacesMessage; 
import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import javax.faces.convert.Converter; 
import javax.faces.convert.ConverterException; 
import javax.faces.convert.FacesConverter; 

@FacesConverter("com.algaworks.SmartDate") 
public class SmartDateConverter implements Converter { 

    private static final DateFormat formatador = new SimpleDateFormat("dd/MM/yyyy"); 

    private Date getDataHoje() { 
     Calendar dataHoje = Calendar.getInstance(); 
     dataHoje.set(Calendar.HOUR_OF_DAY, 0); 
     dataHoje.set(Calendar.MINUTE, 0); 
     dataHoje.set(Calendar.SECOND, 0); 
     dataHoje.set(Calendar.MILLISECOND, 0); 
     return dataHoje.getTime(); 
    } 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent component, String value) { 
     Date dataConvertida = null; 

     if (value != null && !value.equals("")) { 
      if (value.equalsIgnoreCase("hoje")) { 
       dataConvertida = getDataHoje(); 
      } else { 
       try { 
        dataConvertida = formatador.parse(value); 
       } catch (ParseException e) { 
        FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, 
          "Data incorreta.", "Informe uma data correta."); 
        throw new ConverterException(msg); 
       } 
      } 
     } 

     return dataConvertida; 
    } 

    @Override 
    public String getAsString(FacesContext context, UIComponent component, Object value) { 
     if (this.getDataHoje().equals(value)) { 
      return "hoje"; 
     } 
     return formatador.format((Date) value); 
    } 

} 

这是我的浏览器中发现的错误信息

表达错误:命名的对象:com.algaworks.SmartDate未找到。

回答

0

请试试这个:

<h:inputText id="dataChecagem" 
       value="#{estoqueBean.itemEstoque.dataChecagem}" 
       label="Data de Checagem"> 
<f:converter converterId="SmartDate"></f:converter> 
</h:inputText>  

而变化:

@FacesConverter("SmartDate")