Como formato um campo float que deverá conter vírgula?

Encontrei um script que formata o campo ao digitar

[code]function Limpar(valor, validos) {
// retira caracteres invalidos da string
var result = “”;
var aux;
for (var i=0; i < valor.length; i++) {
aux = validos.indexOf(valor.substring(i, i+1));
if (aux>=0) {
result += aux;
}
}
return result;
}

//Formata número tipo moeda usando o evento onKeyDown

function Formata(campo,tammax,teclapres,decimal) {
var tecla = teclapres.keyCode;
vr = Limpar(campo.value,“0123456789”);
tam = vr.length;
dec=decimal

if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

if (tecla == 8 )
{ tam = tam - 1 ; }

if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
{

if ( tam <= dec )
{ campo.value = vr ; }

if ( (tam > dec) && (tam <= 5) ){
campo.value = vr.substr( 0, tam - 2 ) + “,” +
vr.substr( tam - dec, tam ) ; }
if ( (tam >= 6) && (tam <= 8) ){
campo.value = vr.substr( 0, tam - 5 ) + “.” +
vr.substr( tam - 5, 3 ) + “,” + vr.substr( tam - dec, tam ) ;
}
if ( (tam >= 9) && (tam <= 11) ){
campo.value = vr.substr( 0, tam - 8 ) + “.” +
vr.substr( tam - 8, 3 ) + “.” + vr.substr( tam - 5, 3 ) + “,” +
vr.substr( tam - dec, tam ) ; }
if ( (tam >= 12) && (tam <= 14) ){
campo.value = vr.substr( 0, tam - 11 ) + “.” + vr.substr( tam - 11, 3 ) +
“.” + vr.substr( tam - 8, 3 ) + “.” + vr.substr( tam - 5, 3 ) + “,” +
vr.substr( tam - dec, tam ) ; }
if ( (tam >= 15) && (tam <= 17) ){
campo.value = vr.substr( 0, tam - 14 ) + “.” + vr.substr( tam - 14, 3 ) +
“.” + vr.substr( tam - 11, 3 ) + “.” + vr.substr( tam - 8, 3 ) + “.” +
vr.substr( tam - 5, 3 ) + “,” + vr.substr( tam - 2, tam ) ;}
}

}[/code]

chamada ao script:

* Preço:</td> <input type=text name="preco" value="" maxlength="10" onKeydown="Formata(this,20,event,2)">

Aconte que quando vou cadastrar no banco de dados, utilizo o replace para pegar a vírgula e mudar para ponto. Acontece que se o usuário inserir um número milhar (100.00,00) o replace tenta tratar os pontos também e gera erro na inserção.

tratamento do form:

[code]String sPreco;
float preco;

sPreco = request.getParameter("preco");
sPreco = sPreco.replace(",", ".");

try {
preco = Float.valueOf(sPreco);
} catch(NumberFormatException nfex) {
response.sendRedirect(“cadastro_produtos.jsp?price_error”);
return;
} [/code]

Como posso tratar a vírgula mas deixando os pontos como estão e inserir os
números em formato float no banco de dados corretamente?
Tanto faz, em javascript ou JSP, procuro uma solução pra isso.

Obrigado.

Velho usa JSTL
Tem o format do jstl faz isto

http://www.guj.com.br/posts/list/21214.java

Mas isso é framework ou não?

Não estou utilizando nenhum framework, apenas JSP puro.

dar uma olhada nisso

[quote=wag?.ferreira]Velho usa JSTL
Tem o format do jstl faz isto[/quote]

Vou dar uma olhada.

Mas taglib não precisa de um arquivo pra ser importado para a aplicação?

Alguns eu já importei mas e neste caso?