Mask numero decimal no JSF

Boa tarde estou tendo um problema em colocar uma mascara em um número decimal, quero colocar 2 casas no máximo depois da vírgula
Estou usando um javascript pra poder fazer a conta desse campo vindo de BigDecimal.

<h:inputText value="" id="textValorTotal" disabled="true"> <f:convertNumber maxFractionDigits="2" ></f:convertNumber> </h:inputText>

A biblioteca prime faces tem várias mask pronta ja se for possível utilizar.
Segue link do exemplo

http://www.primefaces.org/showcase/ui/inputMask.jsf

O f:convertNumber eu utilizo só para formatar um valor decimal em labels, span e não em inputs…
para inputs use o mask do JQuery ou algo similtar…

se tiver usando o rich:faces ele já vem com uma tag para usar o JQuery. Eu uso assim:

	<h:inputText id="txtValor" value="#{meuHandler.contrato.valor}" converter="moedaConverter">
                 <rich:jQuery selector="#txtValor" 
                                     query="maskMoney({symbol:'R$',decimal:',',thousands:'.'})" 
                                     timing="onload"/>
	</h:inputText>

Muito boa mas não da não, não estou podendo utilizar primefaces nem richfaces,sistema muito acessado tanto que tem que ser tudo em javascript

o rich:JQuery, e o primefaces usam javaScript e não fazem chamadas para o servidor apenas para validar este campo ele usa javascript para formatar a entrada de valor no seu input sem fazer request… mas se não quizer usar nada destes componentes jsf, vc pode usar o JQuery crú que é JavaScript (http://jquery.com/) para validar o seus inputs… (Procure como JQuery Mask, é bem facil de usar)

faz na mao mesmo entao…segue um tutorial

<script src="jquery.js" type="text/javascript"></script>  
<script src="jquery.maskedinput.js" type="text/javascript"></script> 

jQuery(function($){  
$("#date").mask("99/99/9999");  
$("#phone").mask("(999) 999-9999");  
$("#tin").mask("99-9999999");  
$("#ssn").mask("999-99-9999");  
}); 

Fonte: http://www.ajaxianos.com.br/2009/03/mascara-para-campos-de-texto-jquery/

[quote=Mauricio de Mello]faz na mao mesmo entao…segue um tutorial

<script src="jquery.js" type="text/javascript"></script>  
<script src="jquery.maskedinput.js" type="text/javascript"></script> 

jQuery(function($){  
$("#date").mask("99/99/9999");  
$("#phone").mask("(999) 999-9999");  
$("#tin").mask("99-9999999");  
$("#ssn").mask("999-99-9999");  
}); 

Fonte: http://www.ajaxianos.com.br/2009/03/mascara-para-campos-de-texto-jquery/[/quote]

Estou tentado utilizar, já coloquei o maskedinput no meu template, coloquei a função, porém continua não funcionando…

jQuery(function($){ $("#textValorTotal").mask("999.999,99"); });

Tenho outro problema esse campo ele é disabled e vai ser setado valores nele, o usuario não digita, então esse javascript não vai funcionar.

Procura por NumberFormat e faz em java mesmo no backbean

import java.text.NumberFormat;

 

public class Formata {

 

      public static void main(String[] args) {

           

            System.out.println(NumberFormat.getCurrencyInstance().format(12345678.90));

            // imprimirá R$ 12.345.678,90          

      }

}

feito :slight_smile:

[quote=Mauricio de Mello]Procura por NumberFormat e faz em java mesmo no backbean

import java.text.NumberFormat;

 

public class Formata {

 

      public static void main(String[] args) {

           

            System.out.println(NumberFormat.getCurrencyInstance().format(12345678.90));

            // imprimirá R$ 12.345.678,90          

      }

}

feito :)[/quote]

Mas o calculo do valor total estou fazendo em javascript =) ou seja não volta no backbean =) pra não fazer requisição no servido

Alguém ai pode me ajudar?

Funcionou 100%

https://groups.google.com/d/msg/javasf/TyDdne0PgoU/47d4GxBiASEJ