Calcalos em CRUD Primefaces JSF

Boa notie galera, estou fazendo um trabalho que envolve um CRUD de produtos com alguns cálculos. Queria saber como faço pra que ando eu alterar por exemplo o camplo Lucro (%) ele calcule no campo VlTotal, e vice-versa, em desktop eu sabia fazer, mas agora na Web to penando. Tem algum evento tipo o onExit do campo para ele fazer este calculo?
Seguem os códigos pra análise. Obrigado.

Controle:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.nfacil.control;

import br.com.nfacil.converter.ConverterGenerico;
import br.com.nfacil.facade.ProdutoFacade;
import br.com.nfacil.facade.GrupoFacade;
import br.com.nfacil.model.Grupo;
import br.com.nfacil.model.Produto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.convert.Converter;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

/**
*

  • @author lucas
    */
    @ManagedBean(name = “produtoControle”)
    @SessionScoped
    public class ProdutoControle implements Serializable {

    private Produto produto = new Produto();
    @EJB
    private ProdutoFacade produtoFacade;
    @EJB
    private GrupoFacade grupoFacade;

    private Converter grupoConverter;
    private List lista = new ArrayList();

    private List listap = new ArrayList();

    public void salvar() {
    produtoFacade.salvar(produto);
    }

    public void novo() {
    produto = new Produto();
    }

    public Converter getGrupoConverter() {
    if (grupoConverter == null) {
    grupoConverter = new ConverterGenerico(grupoFacade);
    }
    return grupoConverter;
    }

    public void setGrupoConverter(Converter GrupoConverter) {
    this.grupoConverter = GrupoConverter;
    }

    public void editar(ActionEvent e) {
    produto = (Produto) e.getComponent().getAttributes().get(“produto”);
    }

    public void excluir(ActionEvent e) {
    produto = (Produto) e.getComponent().getAttributes().get(“produto”);
    produtoFacade.remove(produto);
    }

    public List getLista() {
    return produtoFacade.consultar();
    }

    public void setLista(List listap) {
    this.listap = listap;
    }

    public List getListap() {
    return listap;
    }

    public void setListap(List listap) {
    this.listap = listap;
    }

    public ProdutoFacade getProdutoFacade() {
    return produtoFacade;
    }

    public void setProdutoFacade(ProdutoFacade produtoFacade) {
    this.produtoFacade = produtoFacade;
    }

    public Produto getProduto() {
    return produto;
    }

    public void setProduto(Produto produto) {
    this.produto = produto;
    }
    public void calculaTotal(){

    }

    public List getProdutos() {
    List listaProdutos = new ArrayList();
    for (Produto p : produtoFacade.consultar()) {
    listaProdutos.add(new SelectItem(p, p.getDescricao()));
    }
    return listaProdutos;
    }
    public List getGrupos() {
    List listaGrupos = new ArrayList();
    for (Grupo g : grupoFacade.consultar()) {
    listaGrupos.add(new SelectItem(g, g.getNome()));
    }
    return listaGrupos;
    }
    }
    [/code]
    View:

[code]<?xml version='1.0' encoding='UTF-8' ?>

                        <h:outputText value="Grupo"/>
                        <p:selectOneMenu value="#{produtoControle.produto.grupo}" converter="#{produtoControle.grupoConverter}">
                            <f:selectItems value="#{produtoControle.grupos}"/>
                        </p:selectOneMenu>
                        <p:selectBooleanCheckbox label="Registro Ativo?" required="true" 
                                                 requiredMessage="Informe se o registro encontra-se ativo ou não" 
                                                 itemLabel="Ativo" value="#{produtoControle.produto.ativo}">                      
                        </p:selectBooleanCheckbox>
                    </p:panelGrid>
                </p:fieldset>
                <p:commandButton value="Salvar" actionListener="#{produtoControle.salvar()}" ajax="false"/>
                <p:commandButton value="Cancelar" action="/relatorios/produtolista" actionListener="#{produtoControle.novo()}" ajax="false" immediate="true"/>
            </p:fieldset>
        </h:form>

    </ui:define>

</ui:decorate>
[/code]

tags html:

onkeyup
oninput (html5)

e por ai vai.

onblur = ele atualiza o componente ao perder o foco do mesmo. Tipo mudar para outro campo.

Da uma olhada no site da w3schools, tem muito informação excelente lá.

Você pode utilizar ajax:
JSF Exemplos Simples com Ajax

Obrigado galera!

Galera, eu sou bem ignorante em programação pra web. no meu bean como digo que tal input é referente a tal atributo? tipo eu queria fazer um calculo assim:

[code]public void getCalculaTotal(){

produto.vlTotal = produto.vlcusto + produto.vlucro;
}
[/code]

Mas como faço a passagem de parametros? pra pegar o valor la da view

Eu quero usar o evento onblur.
Obrigado.
Abraço.