Bom dia a todos,
Estou com um problema na utilização de converters no JSF 2.
Tem uma classe que representa um filtro,essa classe possui alguns atributos como por exemplo : Unidade,Produto são referencias a classes java, cada classe desse tipo possui um converter associado por ID, esse converter verifica se o conteúdo de um selectOneMenu está vazio e e cria uma referencia vazia da classe do seu tipo, segue o código:
Dúvidas:
Quando eu faço debug no processo de submit,nunca é passado pelo Converter da Unidade, o processo ocorre sempre no início da criação da página, considerando o ciclo de vida do JSF, o converter num era para ser executado quando fosse disparada uma requisição?
Quando o usuário não escolhe uma unidade o converter deveria retornar um UnidadeNula, estou correto?
Página:
<h:selectOneMenu value="#{consultaRegistroDeEntradaDeEstoqueController.filtro.unidade}"
id="selUnidade"
styleClass="span3" converter="unidadeFiltroConverter">
<f:selectItem itemLabel="Selecione.."
itemValue=""/>
<f:selectItems value="#{consultaRegistroDeEntradaDeEstoqueController.unidades}" var="u"
itemValue="#{u}"
itemLabel="#{u.descricao}"/>
</h:selectOneMenu>
Converter:
@ApplicationScoped
@FacesConverter("unidadeFiltroConverter")
public class UnidadeFiltroConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (Strings.isNullOrEmpty(value)) {
return UnidadeNula.novaUnidadeNula();
}
return SpringJsfUtil.getBeanOfType(ServicoDeUnidade.class).buscaUnicoPorCodigo(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return value.toString();
}
}
Alguém pode me ajudar?
Obrigado,