在JSF中格式化double

时间:2008-10-03 13:37:53

标签: jsf formatting decimal

我遇到类似于此处发现的问题:JSF selectItem label formatting

我想要做的是接受一个double作为我的值,并用两位小数显示它。这可以通过简单的方式完成吗?

我尝试过使用但似乎应用于发送到服务器的inputText中的值,而不是输入字段中的初始值。

到目前为止我的代码:

<h:inputText id="december" value="#{budgetMB.december}" onchange="setDirty()" styleClass="StandardBlack">
    <f:convertNumber maxFractionDigits="2" groupingUsed="false" />
</h:inputText>
编辑:上面的代码实际上有效。我被JDeveloper欺骗了,即使我明确重建了我的项目并重新启动了嵌入式OC4J服务器,它也没有更新jsp页面。但是,重新启动计算机后一切都很好。

3 个答案:

答案 0 :(得分:14)

如果我没有误解你的要求,我可以在渲染视图的过程中实现输入框中值的格式化:

<h:inputText id="text1" value="#{...}">
    <f:convertNumber pattern="#,###,##0.00"/>
</h:inputText>

我在供应商品牌的Eclipse中使用了Standard Faces组件,所以我假设pattern属性是标准JSF的一部分。

答案 1 :(得分:1)

如果您要做的是在屏幕上更改输入文本字段的值(以更正用户输入),您应该考虑使用其中一个JSF ajax框架,如Rich Faces

可能的示例如下所示:

<h:inputText id="december" value="#{budgetMB.december}" styleClass="StandardBlack">
  <f:convertNumber maxFractionDigits="2" groupingUsed="false" />
  <a4j:support event="onblur" reRender="december" />
</h:inputText>

我没有对此进行测试,但我认为它可能有用。

答案 2 :(得分:0)

看来你实际上正在格式化一种货币。已经存在一个特定的格式化程序来处理您可以为其分配许多选项的货币:

<f:convertNumber type="currency" />

此标记的一些有趣属性包括:localecurrencyCodeintegerOnlycurrencySymbolpattern