在JSF中显示原始值f:convertNumber(无限小数位数)

时间:2017-09-23 08:02:22

标签: jsf-2.2 omnifaces

我在<f:convertNumber groupingUsed="false" />内使用<h:inputText将用户输入转换为数字。再次打开输入对话框时,输入格式化为仅显示3个小数位。如何更改此项以显示输入&#34;因为它是&#34;。

使用#{of:formatNumber(specification.pricePerUnit, '#0.000')}格式化输出I&m; m中的值以显示3个小数位数(至少)。不幸的是,我们有客户,想要输入更多的小数位数(上面的问题)。那么,我怎么能用至少3个小数位数来显示数字,但是如果有更多数字,那么显示它们全部?

提前致谢:)

2 个答案:

答案 0 :(得分:1)

  

好的,我们假设如下:我有一个表格:。我输入值123,123456789并保存。同   您上面的代码在另一个页面上显示的值为   123,123456789。但是当我再次打开表单来编辑值时,   输入字段显示为123,123但不显示123,123456789。所以,我认为   maxFractionDigits的默认值是3?

一个非常基本的例子:

<h:form>
    <div>
    <h:outputText value="#{of:formatNumber( testBean.myNumber, '0.000#######')}" />
    </div>
    <div>
    <h:inputText value="#{testBean.myNumber}" >
        <f:convertNumber groupingUsed="false" pattern='0.000#######' />
    </h:inputText>
    </div>
    <h:commandButton type="submit" value="Submit" />
</h:form>

和bean代码:

private BigDecimal myNumber = new  BigDecimal("355.3456");

public BigDecimal getMyNumber() {
    return myNumber;
}

public void setMyNumber(BigDecimal myNumber) {
    this.myNumber = myNumber;
}

一些测试:

第一个GET请求后,页面如下所示:

enter image description here

现在输入12345.6789099

enter image description here

点击Submit按钮后:
enter image description here

另外几个例子:
enter image description here

enter image description here

enter image description here

答案 1 :(得分:0)

很难找到任何文档,但是在 org.glassfish / javax.faces 2.3.9 中,我也发现默认值为 3 用于maxFractionDigits。

<f:convertNumber groupingUsed="false" />

等于

<f:convertNumber groupingUsed="false" maxFractionDigits="3" />

根据您的需要进行更改:

<f:convertNumber groupingUsed="false" maxFractionDigits="10" />