Executar método na saída de um campo

6 respostas
javafront-end
F

Pessoal, como faço para que ao sair do campo “Produto” seja executado um método do meu MB?

Tentei de duas maneiras, mas SEM SUCESSO. Por favor, me ajudem!!!

Tentativa 1:

<p:autoComplete id="produto"
     value="#{pedidoController.produtoPedido.produto}"
     completeMethod="#{pedidoController.buscaProdutos}"
     var="produto" itemLabel="#{produto}" itemValue="#{produto}"
     converter="produtoConverter" forceSelection="true" size="40"
     onblur="#{pedidoController.calcularSubtotal()}" />

Tentativa 2:

<p:autoComplete id="produto"
         value="#{pedidoController.produtoPedido.produto}"
         completeMethod="#{pedidoController.buscaProdutos}"
         var="produto" itemLabel="#{produto}" itemValue="#{produto}"
         converter="produtoConverter" forceSelection="true" size="40">
         <p:ajax event="blur" listener="#{pedidoController.calcularSubtotal()}"/>
     <p:autoComplete />

Método do meu MB:

public void calcularSubtotal() {
        System.out.println("Chamando blur do Ajax...");
}

POR FAVOR, O QUE ESTOU FAZENDO DE ERRADO???

6 Respostas

F

Mais um post SEM RESPOSTA será gente? =/

F

@rfagalde vi que passou por algo parecido anos atrás … rsrs
Pode me ajudar??? To desesperada jaaaa aff

@vinnymesquita conseguiu resolver o problema?
Não consigo fazer o evento funcionar dentro do autocomplete …

Primefaces autocomplete não atualiza xhtml

D

Não tenho muita experiência com JSF, mas poderia tentar:

<p:ajax event="blur" update="subtotal"/>
<p:autoComplete />
<h:outputText id="subtotal" value="#{pedidoController.subtotal}" style="display:none" />

No pedidoController

public Object getSubtotal() {
    calcularSubtotal();
    return "";
}

public void setSubtotal(Object v) {
    // calcularSubtotal();
}

http://www.primefaces.org/showcase/ui/ajax/event.xhtml

F

Diego, o problema é que meu método de apoio ao evento ‘blur’ não está sendo executado.
Após fazer vários testes, cheguei a conclusão de que o meu Converter pode estar causando problemas, porque quando eu tiro a lógica do ProdutoConverter e uso o autocomplete apenas com uma String simples que criei, o evento ‘blur’ é chamado normalmente!!! Tem algum palpite???

Vou ficar com cabelos brancos rápido dessa formaa…

D

Sugiro tentar então como no link

<a href="http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/" class="onebox" target="_blank">http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/</a>

ou

<aside class="quote" data-post="1" data-topic="195943">
  <div class="title">
    <div class="quote-controls"></div>
    <img alt="" width="20" height="20" src="/user_avatar/www.guj.com.br/cbs_sp/40/15215_1.png" class="avatar">
    <a href="//www.guj.com.br/t/um-exemplo-do-primefaces-autocomplete-com-converter/195943/1?source_topic_id=332140">Um exemplo do Primefaces Autocomplete com Converter</a> <a class="badge-wrapper  bullet" href="/c/front-end">Front-end</a>
  </div>
  <blockquote>
    Olá pessoal, 

Segue um exemplo da tag autoComplete do Primefaces, usando um converter: 

// O bean:  

 public class CompanyControl implements Serializable{
    private CompanyMemoryDao dao = new CompanyMemoryDao();
    private Company selected;
    public Company getSelected() {
        return selected;
    }
    public void setSelected(Company selected) {
        this.selected = selected;
    }
    // Actions
    public List&lt;Company&gt; completeCompany(){
        return dao.listAll();
    
  </blockquote>
</aside>

Verifique também a annotation @FacesConverter da sua classe ProdutoConverter

F

Diego, muita obrigada pelas suas respostas!!!
Na verdade o meu código estava todo correto e não estava executando o evento BLUR porque o campo que vinha após o autocomplete na árvore de componentes estava gerando uma exception… acho que eu estava tão focada no autocomplete que não acabei me dando conta disso (e olha que perdi muito tempo com isso)… Enfim, obrigadaaaaaaaa

Criado 19 de julho de 2016
Ultima resposta 20 de jul. de 2016
Respostas 6
Participantes 2