JSF 2 + Converter

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,

Olá tudo bem?

claudioed tenta assim:

troca o :

<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>

por isso:

<h:selectOneMenu value="#{consultaRegistroDeEntradaDeEstoqueController.filtro.unidade}"  
                  id="selUnidade"  
                  styleClass="span3">

         <f:selectItem itemLabel="Selecione.."  
                   itemValue=""/>  
       
         <f:selectItems value="#{consultaRegistroDeEntradaDeEstoqueController.unidades}" var="u"  
                    itemValue="#{u}"  
                    itemLabel="#{u.descricao}"/>


         <f:converter converterId="unidadeFiltroConverter" /> // tenta assim


</h:selectOneMenu>

Bom dia Daniel,

Eu experimentei a marcação do converter dessa forma, mais ainda sim sem sucesso.

O que me estranha…é que mesmo o ciclo de vida sendo executado não passa pelo converter…

Obrigado pela resposta.

Att

Bom dia amigo,

O commandButton ou commandLink que você usa na hora de submeter o form não está com immediate=true? Se sim, isso está alterando o ciclo de vida do JSF, tome cuidado, pode ser isso.

Bom dia Guilherme,

Na verdade o commandButton não está com este atributo, marcado já tive problemas com ele…rs…

Segue o código dele:

                       <h:commandButton value="Buscar" styleClass="btn btn-primary"
                                         action="#{consultaRegistroDeEntradaDeEstoqueController.buscar}">
                            <p:ajax update="@form"/>
                        </h:commandButton>

Obrigado,