8
respostas

f:ajax não dispara evento no h:selectOneMenu

Olá pessoal, poderia me dizer o que ocorre no JSF que não está disparando o evento no componente selectOneMenu?

<div class="coluna3">
    <h:selectOneMenu value="#{entradaBean.entrada.produto}" id="produtos">    
            <f:selectItems var="p" value="#{entradaBean.resultado}" itemValue="#{p}" itemLabel="#{p.nome}" />
                    <f:ajax event="select" listener="#{entradaBean.buscarProduto()}" execute="@this" render="estoque" />
                     <f:param name="id_produto" value="#{p.idProduto}"/>
        </h:selectOneMenu>
<div class="coluna3">
    <h:inputText value="#{entradaBean.entrada.produto.estoqueAtual}" id="estoque"/>
</div>
public void buscarProduto() {
        String id = facesContext.getExternalContext().getRequestParameterMap().get("id_produto");
        Produto produto = produtoService.buscarPorId(Integer.parseInt(id));
        entrada.setProduto(produto);
    }
8 respostas

Olá, Isaque.

Tenta mudar o evento que você está ouvindo pra "change", assim ele vai disparar quando você mudar o valor selecionado.

Também verifique se, na sua página, você está com as tags de head para que possa ser injetado o javascript corretamente.

Oi Hugo!

Fiz as alterações mais continua no mesmo sem disparar o evento.

Muito estranho. Você tem algum outro ajax na página que esteja funcionando?

Bom, estou achando que o problema é esse param, que não faz sentido. Você já está passando o parâmetro para o bean a partir do momento em que você o associa ao campo select, pois fora isso aparentemente seu código está ok.

Tenho sim. E está funcionado. Só apenas esse componente que não funcionou.

Comentário besta, mas vê se o campo está dentro de um form. Vai saber

Está sim... Não tenho ideia porque não disparou o evento.

Está sim... Não tenho ideia porque não disparou o evento.