Por lo que veo presentas varios problemas el 1ro es que el INPUT NUMBER que usas si no es el nativo de HTML debe de tener una api adicional un archivo que no bajaste con la configuración regional y una vez que lo tengas agregado a tu proyecto tienes que hacer algo así:
$.fn.select2.defaults.set("language", "es");
jQuery.datetimepicker.setLocale("es");
Aquí use un select2
para JQuery y un datetimepicker
. Para ambos baje sus archivos de regionales de idioma y los inicialice con el código de arriba. Por ejemplo para el select2
su archivo era select2-i18n/es.js
. Para el datepicker.min.js
hay un archivo datepicker.es-ES.min.js
y para el datetimepicker
había un archivo con todos los idiomas jquery.datetimepicker.full.min.js
Como no pones específicamente cual usas no puedo decirte como hacer eso exactamente.
La 2da cosa que tienes que revisar es la configuración regional de tu sistema operativo. En Windows ve a "Editar opciones de idioma y teclado" -> "Fecha, hora y formato regional"->"Opciones adicionales de fecha, hora y configuración regional"->En región "Cambiar formatos de fecha, hora o número" o ve directamente al panel de control y buscas Región y luego "Cambiar formatos de fecha, hora o número":
Luego vas a configuración adicional:
Cambia el símbolo decimal por ".".
Y el símbolo de separación de miles por ",".
Estas configuraciones terminaran afectando a tu IDE y al mismo java.
El 3er problema que veo es que tu campo se llama "precio", por lo cual vas a usar dinero y por lo tanto no puedes usar Double(64 bits)
ni Float(32 bits)
ya que internamente se resuelven con complemento a 2 y se terminan redondeando.
Para manejar dinero debes usar la clase java.math.BigDecimal
, porque tampoco sirve utilizar tipos money
o moneda
ni en java ni en base de datos para manejar dinero.
Entonces quedaria algo asi:
import java.math.BigDecimal
y despues
BigDecimal precio =new BigDecimal(request.getParameter("precio").replaceAll(",", ""));
Es decir, si arreglas la configuración regional de tu INPUT NUMBER al recuperarlo en java solo tienes que eliminar la "," de separación de miles y usar el valor para crear un BigDecimal
.
Otra cosa es que el javascript suele tener por defecto el idioma del navegador, si bajaste un navegador configurado para español de españa puede ser la razón por la que el símbolo de separador de decimales sea "," y no ".". Si es el caso tendrás que bajar alguno configurado con español internacional o latinoamérica.
Tienes que revisar todos estos puntos para corregir tu problema.