Seam – Getting started: Converters!
Marcos Sousa | May 16, 2008Na 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!






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! =)
Opa valeu pela Dica, foi de grande ajuda
Olá Marcos, primeira parabens pelo post…
Estou tendo um problema com o Converter, quando tento atualizar um produto, ao inves de mandar o id da category, ele manda a string com a instancia do objeto categoria.
@João Paulo,
Bom seu conversor tem que ser consistente, se ele gera o ID ele vai receber o ID da categoria. Não tem como ele gerar a descrição e receber o id.
Abraços,
Marcos Sousa