使用Freemarker生成的动态页面传递数据时,数据被自动添加逗号进行分割
使用freemarker进行动静分离时遇见以下错误:
Field error in object 'employe' on field 'salary': rejected value [1,231]; codes [typeMismatch.employe.salary,typeMismatch.salary,typeMismatch.java.lang.Double,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [employe.salary,salary]; arguments []; default message [salary]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Double' for property 'salary'; nested exception is java.lang.NumberFormatException: For input string: "1,231"]]
这个错误是在使用freemarker的模板文件生成的静态页面向后台传数据时产生的。
报错说:Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Double' for property 'salary',我的后台接收使用的是对象作为参数,框架spring应该会自动将将String类型的数值转换为对应类型的数值才对。
向后看:nested exception is java.lang.NumberFormatException: For input string: "1,231"
如其所述:salary字段向后台传的数据是String类型的1,231,而后台接收数据使用的是Double类型的,数据格式错误。
原来如此,freemarker在将动态数据填入模板时,会将数值类型的数据转换为字符串类型,并且默认使用逗号进行三位一分割,而在向后台传递时别不会自动去掉,所以会有数据格式错误。
解决方式:
在数值类型的数据获取时加上?c即可。
如:${employe.salary?c} 这样便不会在自动添加逗号分割了。


浙公网安备 33010602011771号