fnx
Julho 19, 2016, 7:39pm
#1
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???
fnx
Julho 19, 2016, 8:27pm
#2
Mais um post SEM RESPOSTA será gente? =/
fnx
Julho 19, 2016, 9:22pm
#3
@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
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
fnx
Julho 19, 2016, 11:50pm
#5
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…
Sugiro tentar então como no link
http://www.mkyong.com/jsf2/custom-converter-in-jsf-2-0/
ou
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<Company> completeCompany(){
return dao.listAll();
…
Verifique também a annotation @FacesConverter
da sua classe ProdutoConverter
fnx
Julho 20, 2016, 10:49pm
#7
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