Recentemente criei uma aplicação com JSF, Primefaces, Spring e JPA, inicialmente para usar no Tomcat. Como me preocupei em criar uma aplicação independente do servidor/servlet container, ela rodou normalmente no JBoss AS 7, com um mínimo de ajuste no Maven. Resolvi então testar o Jetty, que por acaso é o servidor do GUJ (http://www.guj.com.br/paginaquenaoexiste), mas curiosamente um de meus converters, aliás o mais simples, não funcionou. Trata-se de um converter bem simples que retira a máscara do CPF digitado no formulário:
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter(value="cpfConverter")
public class CPFConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String str) {
if((str == null) || (str.isEmpty()))
return null;
if(str.length() < 14)
return str;
String cpf = str.substring(0, 3) + str.substring(4, 7) + str.substring(8, 11) + str.substring(12, 14);
return cpf;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object obj) {
String str = obj.toString();
if(str.length()<11)
return str;
return str.substring(0,3) + "." + str.substring(3,6) + "." + str.substring(6, 9) + "-" + str.substring(9, 11);
}
}
No meu formulário está assim:
<p:inputMask mask="999.999.999-99" id="cpf" value="#{usuarioBean.usuario.cpf}" converter="cpfConverter" />
Ao acessar a página que o referencia, a seguinte exceção é lançada:
javax.faces.FacesException: Erro de expressão: Objeto denominado: cpfConverter não encontrado.
O curioso é que possuo converters de entidades do meu banco que funcionam normalmente. Nelas, a única diferença é que, como preciso acessar meus beans, estão anotadas como @Component e no campo do formulário coloco converter="#{entidadeConverter}". Pois bem, fiz o mesmo com o CPF, o erro sumiu, mas também não converte nada.
Alguém já passou por situação semelhante?? Isto está me parecendo algum bug mesmo com o Jetty, já que nos outros servidores funciona normal.
Acho que vou ficar mesmo com o tomcat, apesar de que o jetty me pareceu muito mais leve.
Um abraço a todos!