【问题标题】:h:inputText changing to scientific notationh:inputText 变为科学计数法
【发布时间】:2011-02-22 00:21:35
【问题描述】:

我有一个 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”分配给双精度并打印它,它会以科学计数法显示给您)。

所以我进入了我的 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}": 属性“tableQuantityFormatted”不 可写在 java.lang.String 类型上

【问题讨论】:

    标签: jsf formatting textbox scientific-notation


    【解决方案1】:
    <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" %>
    

    就我而言。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2021-04-04
      • 1970-01-01
      相关资源
      最近更新 更多