如何在Thymeleaf HTML中使用th:field时以小数点替代逗号
Thymeleaf th:field 小数分隔符调整解决方案
问题原因
Thymeleaf默认会继承服务端的区域配置(Locale)渲染数字格式,当区域设置为使用逗号作为小数分隔符的地区(如欧盟多数国家)时,小数就会显示为125,00的格式。
解决方案(保留th:field属性)
方案1:实体类字段加格式注解(最推荐,无需修改HTML代码)
在对应表单实体类的productCost字段上添加@NumberFormat注解,明确指定数字格式:
import java.math.BigDecimal; import org.springframework.format.annotation.NumberFormat; public class ProductForm { // pattern属性明确小数分隔符为点,固定保留两位小数 @NumberFormat(pattern = "#.00") private BigDecimal productCost; // 原有getter、setter保持不变 }
你的原有HTML代码不需要做任何修改,直接保留th:field="*{productCost}"即可,渲染时会自动输出125.00格式的内容,同时表单提交时也能正常完成数据绑定。
方案2:全局配置区域格式
如果希望全站所有数字都使用点作为小数分隔符,可以在SpringBoot配置文件application.properties中添加全局配置:
# 固定区域为美国英语,默认小数分隔符为点 spring.mvc.locale=en_US # 统一数字格式保留两位小数 spring.mvc.format.number=#.00 spring.thymeleaf.encoding=UTF-8
该配置生效后所有数字字段默认都会用点作为小数分隔符,不需要单独修改字段配置。
注意事项
如果表单提交时出现数字格式解析错误,需要确认后端的参数解析器已适配#.00格式的数字,SpringBoot默认会自动识别@NumberFormat注解的配置完成解析,无需额外配置。
内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu
相关产品推荐
相关产品推荐

