在Freemarker中将BigDecimal转换为Short

时间:2017-02-23 14:59:09

标签: java casting freemarker bigdecimal

我的freemarker值堆栈中有Map<Short, String>,我需要以这种方式在模板中打印一个值:

${map.get(3)}

由于freemarker将3解释为BigDecimal,因此抛出异常:

freemarker.core._TemplateModelException:[...]
[...]
Caused by: java.lang.ClassCastException: java.lang.Short cannot be cast to java.math.BigDecimal
    at java.math.BigDecimal.compareTo(BigDecimal.java:220)
    at java.util.TreeMap.getEntry(TreeMap.java:352)
    at java.util.TreeMap.get(TreeMap.java:278)

当然我可以在值堆栈中访问String值,但是有更优雅的方式将数字转换为freemarker中的Short吗?

(我正在使用freemarker 2.3.25

1 个答案:

答案 0 :(得分:0)

尝试

${map.get(new java.math.BigInteger("3").shortValueExact())}

OR

${map.get(new java.math.BigInteger("3").shortValue())}