Porcentagem Java Web

Pessoal, preciso criar uma função para, a partir do custo calcular lucro e o preço de venda, digitando uma margem, com variaveis BigDecimal, enquanto digito numa pagina em xhtml.

Pq tem que ser numa página xhtml?

O cálculo independe de onde vai ser a saída, fera. O cálculo não muda.

Estou desenvolvendo um projeto java web com primefaces.

Você já tem a tela criada? Se sim, vc sabe como se comunicar com um managedbean chamando um método?

Sim, só não estou conseguindo fazer o método. Já tentei de varias formas.

<p:commandButton id="calcular" icon="ui-icon-calculator"
		immediate="true" update="formCadastro" oncomplete="PF('dialogo').show();"
		actionListener="#{produtoBean.calcular}" />
	
	<p:outputLabel value="Lucro: R$" style="text-align:right;" />
	
	<h:outputText value="#{produtoBean.produto.lucro}" maxlength="12" size="8">
		<f:convertNumber locale="pt_BR" minFractionDigits="2" style="text-align:right;" />
	</h:outputText>
	
	<p:outputLabel value="P. Venda R$" style="text-align:right;" />
	<h:outputText value="#{produtoBem.produto.pvenda}" />	

MB

public void calcular() {
	produto.setCusto(new BigDecimal("0.00"));
	produto.setMargem(new BigDecimal("0.100"));
	produto.setLucro(new BigDecimal("0.00"));
	produto.setPvenda(new BigDecimal("0.00"));
	produto.setLucro(produto.getCusto().multiply(produto.getMargem()));		
}

Está para dessa forma.

<p:panelGrid columns="5">
	<p:outputLabel for="custo" value="Custo em R$" />
	
	<p:inputText id="custo" maxlength="12" size="8" style="text-align:right;" value="#{produtoBean.produto.custo}"
			required="true" requiredMessage="O campo 'Custo' é obrigatório"
			converterMessage="Informe um valor válido para o campo 'Preço''"
			validatorMessage="Informe um valor entre 0,01 e 999.999,99 para o campo 'Custo'">
		
		<f:validateDoubleRange minimum="0.01" maximum="9999.99" />
		<f:convertNumber locale="pt_BR" minFractionDigits="2" />
	</p:inputText>
	
	<p:outputLabel for="margem" value="Margem(%):" />
	
	<p:inputText id="margem" maxlength="8" size="8" style="text-align:right;" value="#{produtoBean.produto.margem}"
			required="true" requiredMessage="O campo 'Margem' é obrigatório"
			converterMessage="Informe um valor válido para o campo 'Preço''"
			validatorMessage="Informe um valor entre 0,01 e 999,99 para o campo 'Margem'">
		
		<f:validateDoubleRange minimum="0.01" maximum="9999.99" />
		<f:convertNumber locale="pt_BR" minFractionDigits="2" />
	</p:inputText>
	
	<p:commandButton id="calcular" icon="ui-icon-calculator" immediate="true" update="formCadastro"
			oncomplete="PF('dialogo').show();" actionListener="#{produtoBean.calcular}" />
	
	<p:outputLabel value="Lucro: R$" style="text-align:right;" />
		<h:outputText value="#{produtoBean.produto.lucro}" maxlength="12" size="8">
			<f:convertNumber locale="pt_BR" minFractionDigits="2" style="text-align:right;" />
		</h:outputText>
	
	<p:outputLabel value="P. Venda R$" style="text-align:right;" />
	<h:outputText value="#{produtoBem.produto.pvenda}" />				
</p:panelGrid>