问题 在JSF中格式化double


我有一个类似于这里发现的问题: JSF selectItem标签格式

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

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

我的代码到目前为止:

<h:inputText id="december" value="#{budgetMB.december}" onchange="setDirty()" styleClass="StandardBlack">
    <f:convertNumber maxFractionDigits="2" groupingUsed="false" />
</h:inputText>

编辑:上面的代码实际上工作。我被JDeveloper欺骗了,即使我明确重建了我的项目并重新启动了嵌入式OC4J服务器,它也没有更新jsp页面。但是,重新启动计算机后一切都很好。


11981
2017-10-03 13:37


起源

尝试使用反引号(`)来包含<和>字符的JSF代码 - 我想它已经吃掉了你的一些帖子!


答案:


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

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

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


14
2017-10-03 17:53



您的代码适用于模式的一些更改。但是,我现在也发现了自己的代码。即使重新编译并重新启动嵌入式OC4J服务器,JDeveloper也没有采取我所做的更改。重新启动计算机后,一切正常。 - Stian


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

一个可能的例子如下所示:

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

我没有测试过这个,但我认为它可能有用。


1
2017-10-03 19:15



实际上是另一种方式。我不需要验证输入,但格式化输入字段的默认值。不管怎么说,还是要谢谢你! - Stian


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

<f:convertNumber type="currency" />

此标记的一些有趣属性是: localecurrencyCodeintegerOnlycurrencySymbol 和 pattern


0
2017-10-12 04:41