separar separadores separador puntos por poner numeros miles mil mientras escribe decimales colocar clase java jsp struts2 decimal number-formatting

java - separadores - ¿Cómo pasar un valor decimal de JSP a Acción con un separador decimal localizado?



separador de miles java (1)

En el JSP:

<input type = "number" name = "score" min = "0" max = "100" maxlength = "3" step = "0.01" />

En la acción:

@Getter @Setter private Float score;

Cuando el valor tiene decimales (por ejemplo, 56,78 ), en la Acción obtengo 5678.0 .

Esto se debe al hecho de que Struts2 no sabe que en mi país , es el separador decimal , no el separador de miles .

¿Hay alguna manera de indicar a Struts2 que use el separador decimal de una Locale específica , de modo que pueda convertir los números flotantes correctamente?


Cuando el valor tiene decimales (por ejemplo, 56,78), en la Acción obtengo 5678.0

Esto se debe a que el valor se convierte utilizando la configuración regional predeterminada. La conversión de tipo AFAIK Struts2 tiene en cuenta la configuración regional, y puede seguir la guía de localización para definir formatos específicos para cada configuración regional en el paquete de recursos.

Puede comenzar definiendo formatos para números en los paquetes de recursos. Parece que el formato de número es el mismo para diferentes configuraciones regionales. La configuración regional específica contiene sus propios símbolos de formato decimal, por lo que la salida formateada para los números depende solo de la configuración regional actual utilizada por Struts cuando el valor se formatea para la salida o se convierte de nuevo al número.

Struts2 mantiene la configuración regional actual en el contexto de acción y la almacena en la sesión para establecer el contexto de acción con la nueva solicitud.

Esto se debe al hecho de que Struts2 no sabe que en mi país, es el separador decimal, no el separador de miles.

Struts conoce la configuración regional de su país si se trata de una configuración regional registrada en la JVM que ejecuta. Más sobre esto en Struts 2 (versión 2.3.28) solo acepta configuraciones regionales registradas . La ubicación es implícitamente solicitada por el navegador, que puede tener una configuración regional diferente al sistema operativo por defecto, y explícitamente a través del parámetro request_locale , que es manejado por el interceptor i18n . Consulte Obtener la configuración regional del usuario detectada por el interceptor i18n en la clase de acción .

¿Hay alguna manera de indicar a Struts2 que use el separador decimal de una Locale específica, de modo que pueda convertir los números flotantes correctamente?

Struts está utilizando el formato decimal para formatear y convertir números, que tiene en cuenta la configuración regional. Todo lo que necesita es establecer la configuración regional actual en Struts y formatear los números según esta configuración regional antes de mostrar los números al usuario o enviarlos a la acción.