【发布时间】:2017-07-05 01:45:46
【问题描述】:
在我的 FTL 文件中使用 ?string("0.00") 时出现以下错误,如下所示
${currency}${discount?string("0.00")}
discount 是 BigDecimal 类型,来自我的 java 代码。
2017-02-16 10:48:08.481 [http-nio-80-exec-3] 错误 freemarker.runtime - 模板处理错误:“预期方法。折扣?字符串评估为 freemarker.template.SimpleScalar 在线56,WEB-INF/views/abc/abc-result.ftl 中的第 154 列。” freemarker.template.TemplateException:预期的方法。 discount?string 在 WEB-INF/views/abc/abc-result.ftl 的第 56 行第 154 列上被评估为 freemarker.template.SimpleScalar。 在 freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:136) ~[freemarker-2.3.19.jar:2.3.19] 在 freemarker.core.MethodCall._getAsTemplateModel(MethodCall.java:114) ~[freemarker-2.3.19.jar:2.3.19] 在 freemarker.core.Expression.getAsTemplateModel(Expression.java:89) ~[freemarker-2.3.19.jar:2.3.19] 在 freemarker.core.Expression.getStringValue(Expression.java:93) ~[freemarker-2.3.19.jar:2.3.19]
【问题讨论】:
-
而
discount的类型是什么? -
对不起,我的意思是折扣类型是 BigDecimal :)
-
我碰巧修好了。我将其更改为 ${currency}${discount?number?string("0.00")} 我从 Java 端传递 BigDecimal 但不确定为什么我需要再次转换为数字
-
@Arjun Vinod 将其发布为答案,以便未来的读者可以更轻松地找到解决方案。
标签: java freemarker