JavaServerFaces: Crie seu próprio converter de BARBADA

Os componentes de JSF, necessitam em muitos casos conversões de tipos de dados. Ex: converter="javax.faces.Long", javax.faces.Boolean ... Porém, quando isso foge do padrão e um tipo de informação única é esperada, você precisa especificar o tipo de dado que seu componente ira receber, vou passar os passos simples para a criação de seu próprio converter JSF:

1) Desenvolva a classe:

package com.meupacote.conversores;

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


public class MeuConverter implements Converter {

public Object getAsObject(FacesContext context, UIComponent cp, String v) throws ConverterException {
try {
// Faz os procedimentos necessários para a conversão
// no exemplo eu substituo, "oi", por "tchau", você
// pode precisar fazer algo mais importante
return v.replaceAll("oi","tchau");
} catch(NullPointerException e) {
return null;
}
}

public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
if(value == null) {
return null;
}
// Coloque o procedimento que suprime sua necessidade
return value.toString().replaceAll("cachorro","dog").trim();
}

}



2) Adicione as linhas no seu faces-config.xml


<faces-config>


<!-- etc etc etc -->
<converter>

<description>Conversor para tirar o oi e botar o tchau</description>
<converter-id>meuConverter</converter-id>
<converter-class>com.meupacote.conversores.MeuConverter</converter-class>

</converter>

</faces-config>






3) Use-o como precisar:

<h:selectOneMenu id="meusValores" converter="meuConverter" value="#{meuBean.meuValorEspecial}">
<f:selectItems value="#{meuBean.meusValores}" />
</h:selectOneMenu>

Nenhum comentário: