h:inputText转换为科学计数法

3
我有一个h:inputText控件,可以输入最多7位数,并将它们转换为十进制表示(例如:输入“9999999”,它将呈现为“9999999.0”)。但是,当我输入任何7位数或更多数字时,它将转换为科学计数法形式(例如:键入“10000000”,它将呈现为“1.0E7”)。
根据业务要求,我必须以十进制表示而不是科学计数法形式显示它。是否有人知道如何解决这个问题?
<h:inputText id="tableQuantityId" 
        value="#{fee.tableQuantity}" 
        disabled="#{!fee.selected}" 
        rendered="#{editable}" 
        validator="#{facesValidator.validateQuantity}">
    <a4j:support event="onchange" reRender="messages, feePart" ajaxSingle="true"/>
</h:inputText>

编辑: 经过进一步调查,似乎它从类型“double”获取其当前格式。(换句话说,你可以将“10000000”分配给一个double并打印它,它会以科学计数法显示回来)。

所以我进入了我的getTableQuantity()方法,并将它改为:

(版本双精度)

public double getTableQuantity() {
    return tableQuantity;
}

(转换成字符串表示形式):
public String getTableQuantityFormatted() {

    double d = tableQuantity;
    NumberFormat formatter = new DecimalFormat("###.#####");

    String f = formatter.format(d);
    return f;
}

我在我的xhtml文件中将"value="#{fee.tableQuantity}"更改为"value="#{fee.tableQuantityFormatted}"。

但是现在我的xhtml页面出现以下错误:

数量值10000000不正确。 /page/feeContent.xhtml @70,58 value="#{fee.tableQuantityFormatted}": 类型java.lang.String上的属性'tableQuantityFormatted'不可写入

1个回答

5
<h:inputText 
id="xy"
value="10000000">
  <f:convertNumber maxIntegerDigits="10" maxFractionDigits="1" pattern="#########0.0"/>
</h:inputText>

标签 f 属于:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

在我的情况下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接