o:viewParam setando null

Ola,
Estou utilizando JSF 2.3 e o omnifaces 2.6.2. Acontece que ao utilizar o

<f:metadata>
        <o:viewParam name="produto" value="#{cadastroProdutoBean.produto}"/>
        <f:event listener="#{cadastroProdutoBean.init()}" type="preRenderView" />
</f:metadata>

e entro na pagina para cadastrar um novo produto, ele simplesmente seta null no produto. coloquei o seguinte parametro no web.xml

<context-param>
  <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  <param-value>true</param-value>
</context-param>

Nesse caso gostaria de saber se alguém sabe dizer se trata-se de um bug das versoes do jsf e do omnifaces. Usando a tag do proprio jsf funciona. Mas quando comeco a selecionar os combobox que fazem requisicoes ajax, ele simplesmente chama o metodo setProduto e seta null no produto. Com o omni faces so funciona se eu passar o produto com o id na url chamando o editar. sem passar parametro na url ele esta setando como null.

O conversor do produto

@FacesConverter(forClass = Produto.class)
 public class ProdutoConverter implements Converter<Produto> {

    Produtos produtos;

public ProdutoConverter() {
    produtos = CDIServiceLocator.getBean(Produtos.class);
}

@Override
 public Produto getAsObject(FacesContext context, UIComponent component, String value) {
    if (value == null || value.isEmpty()) {
        return null;
    } else {
        return produtos.porId(new Long(value));
    }
}

@Override
 public String getAsString(FacesContext context, UIComponent component, Produto produto) {
    if (produto == null) {
        return "";
    }
    return produto.getId() == null ? "" : produto.getId().toString();
       }
    }

o bean

@Named
@ViewScoped
public class CadastroProdutoBean implements Serializable {

@Inject
private SituacoesICMS situacoesICMS;
@Inject
private SituacoesPisCofins situacoesPisCofins;
@Inject
private SituacoesIPI situacoesIPI;
@Inject
private TiposDeProduto tiposDeProduto;
@Inject
private GenerosDeProduto generosDeProduto;
@Inject
private CodigosNCM codigosNCM;
@Inject
private Secoes secoes;
@Inject
private Categorias categorias;
@Inject
private Familias familias;
@Inject
private Unidades unidades;

@Inject
private ProdutoService produtoService;

private Produto produto;
private List<CstAIcms> listaCstAIcms;
private List<CstBIcms> listaCstBIcms;
private List<CstPisCofins> listaCstPisCofins;
private List<CstIpi> listaCstIpi;
private List<GeneroProduto> listaGeneroProduto;
private List<TipoProduto> listaTipoProduto;
private List<Secao> listaSecoes;
private List<Categoria> listaCategorias;
private List<Familia> listaFamilias;
private List<Unidade> listaUnidades;

public CadastroProdutoBean() {
        limpar();
}

public void init() {
    if (FacesUtil.isNotPostback()) {
        listaCstAIcms = situacoesICMS.daOrigem();
        listaCstBIcms = situacoesICMS.daTributacao();
        listaCstPisCofins = situacoesPisCofins.deSaida();
        listaCstIpi = situacoesIPI.deSaida();
        listaTipoProduto = tiposDeProduto.todos();
        listaGeneroProduto = generosDeProduto.todos();
        listaSecoes = secoes.todas();
        listaUnidades = unidades.todas();
    }
}

public Produto getProduto() {
    return produto;
}

public void setProduto(Produto produto) {
    this.produto = produto;
    if (produto != null) {
        carregarCategorias();
        carregarFamilias();
    }
}

public List<CstAIcms> getListaCstAIcms() {
    return listaCstAIcms;
}

public List<CstBIcms> getListaCstBIcms() {
    return listaCstBIcms;
}

public List<CstPisCofins> getListaCstPisCofins() {
    return listaCstPisCofins;
}

public List<CstIpi> getListaCstIpi() {
    return listaCstIpi;
}

public List<GeneroProduto> getListaGeneroProduto() {
    return listaGeneroProduto;
}

public List<TipoProduto> getListaTipoProduto() {
    return listaTipoProduto;
}

public List<Secao> getListaSecoes() {
    return listaSecoes;
}

public List<Categoria> getListaCategorias() {
    return listaCategorias;
}

public List<Familia> getListaFamilias() {
    return listaFamilias;
}

public List<Unidade> getListaUnidades() {
    return listaUnidades;
}

public TipoProdutoServico[] getTipoProdutoServico() {
    return TipoProdutoServico.values();
}

public TipoProducao[] getTipoProducao() {
    return TipoProducao.values();
}

public TipoTruncaArredonda[] getTipoTruncaArredonda() {
    return TipoTruncaArredonda.values();
}

public List<Ncm> completarNCM(String descricao) {
    return codigosNCM.porDescricao(descricao);
}

public void carregarCategorias() {
    listaCategorias = categorias.porSecao(produto.getSecao());
}

public void carregarFamilias() {
    listaFamilias = familias.porCategoria(produto.getCategoria());
}

public void salvar() {
    produtoService.salvar(produto);
    limpar();
    FacesUtil.addInfoMessage("Produto salvo com sucesso!");
}

private void limpar() {
    produto = new Produto();
 }
}

Estou enfrentando o mesmo problema…!!! Você conseguiu resolver??