Na sĂ©rie de vĂdeo-aulas que eu fiz para o portal DevMedia sobre o Seam Framework, eu mostrei como podem ser usadas as anotaçÔes para registro de Conversores JSF. A notação Ă© bastante simples. Imagine que vocĂȘ tenha um cadastro de produtos.
Veja o cĂłdigo do conversor:
@Name("productConverter")
@BypassInterceptors
@Converter(forClass=Product.class)
public class ProductConverter implements javax.faces.convert.Converter{
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
// Insira o cĂłdigo que transforme a string no objeto desejado (Product)
}
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
// Insira o cĂłdigo que transforme o objeto desejado (Product) em String
}
}
Para registrar um conversor temos que usar as anotaçÔes:
@Name - Registra o conversor como um componente Seam
@BypassInterceptors - Indica que o conversor não deve sofrer ação dos intercetadores SEAM.
@Converter - Registra o conversor no contexto JSF, o atributo forClass indica a classe que iremos converter.
TambĂ©m poderĂamos cria o conversor usando um identificador, porĂ©m eu fiz alguns testes e para determinados comportamentos sĂŁo gerados erros relacionados ao controle de estado. Se vocĂȘ tambĂ©m teve estas experiĂȘncias, compartilhe-as!
October 15th, 2008 at 8:48 am
OlĂĄ, Marcos!
Usei teu post como referĂȘncia para atualizar meus converters JSF para Seam.
Constatei que, usando o @BypassInterceptors, nĂŁo consigo fazer injeçÔes (@In) de componentes seam (isso que significa “nĂŁo sofrer ação dos interceptadores”?). Resolvi fazendo como nos testes unitĂĄrio Component.getInstance(”meuComponente”).
Apenas para deixar registrado! =)
November 11th, 2008 at 8:18 pm
Opa valeu pela Dica, foi de grande ajuda