JSF EL算术运算的格式化结果

时间:2015-07-29 12:08:14

标签: jsf el

两个整数的除法导致浮点值。 有没有办法在以下情况下将结果作为整数?

<p:commandButton value="#{bean.intA / bean.intB}" ../>

结果应显示为“1”而不是“1.0”。

1 个答案:

答案 0 :(得分:1)

EL不支持向上转换/格式化。一个通用的解决方案是创建一个custom EL function,参考下面的实用方法:

public static String formatNumber(Number number, String pattern) {
    if (number == null) {
        return null;
    }

    DecimalFormat formatter = (DecimalFormat) NumberFormat.getNumberInstance(getLocale());
    formatter.applyPattern(pattern);
    return formatter.format(number);
}

然后您可以按如下方式使用它:

<p:commandButton value="#{util:formatNumber(bean.intA / bean.intB, '#')}" ... />

如果您碰巧使用JSF实用程序库OmniFaces,它可以#{of:formatNumber()}的形式获得,其源代码实际上是在上面复制的。