【发布时间】:2019-06-02 05:47:41
【问题描述】:
我正在我的 jsf Web 应用程序中设置货币输入字段,并有一个支持 bean 来写入值。但是,如果用户输入,转换器<f:convertNumber/> 似乎无法识别正确的输入。可以提交初始值并且可以更改数字,但输入一个值,例如
1,00 欧元
不会工作。我想保留格式化程序并了解如何解决此问题。
我将
JSF 2.3.5-SP2 (Mojarra)与Wildfly 14.0.1和Java 10.0.1一起使用
我将其缩小到数字和货币符号之间的空格,但我不知道如何让<f:convertNumber/> 将简单空格识别为正确输入。
经过一番检查后,原始空间被识别为非破坏空间
&nbsp;
这是我的测试代码:
test.xhtml
<h:body>
<h:form>
<h:inputText value="#{testModel.number}">
<f:convertNumber type="currency" locale="de_DE" currencyCode="EUR"/>
</h:inputText>
<h:commandButton value="Submit" action="#{testModel.submit}"/>
<h:messages style = "color:red;margin:8px;" />
</h:form>
<h:outputText value="#{testModel.number}"/>
</h:body>
TestModel.java
@Named
@RequestScoped
public class TestModel {
private BigDecimal number;
public String submit(){
return "#";
}
public BigDecimal getNumber() {
if(number==null)number = new BigDecimal("0");
return number;
}
public void setNumber(BigDecimal number) {
this.number = number;
}
}
当通过仅删除 0,00 € 的 0 并将其替换为 1 将数字更改为 1,00 € 时,我得到正确的输出。
当我用一个简单的空格替换数字和“€”符号之间的&nbsp;(不间断)空格时,消息显示以下警告:
j_idt3:j_idt4: '0,00 €' konnte nicht als Währungswert interpretiert werden。
表示 '0,00 €' 不能解释为货币价值。
【问题讨论】:
-
请始终发布版本和实施信息,因为它与您在答案中看到的相关。 “当我用一个简单的空格替换数字和'€'符号之间的空格时”不清楚。什么是简单空间,它是什么
-
遗憾的是,在更换之前我不知道那里有什么样的空间。简单空间是您只需按空格键即可创建的空间。
-
然后用浏览器开发工具检查有什么样的空白。
-
我在上面的问题中添加了版本和实现信息。
标签: jsf currency number-formatting