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

Format result of JSF EL arithmetic operation

两个整数相除得到一个浮点值。 在以下情况下,有没有办法将结果作为整数得到?

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

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

EL 不支持 upcasting/formatting。一个通用的解决方案是创建一个 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, it's available as #{of:formatNumber()},其源代码实际上是上面复制的。