【发布时间】:2014-04-09 06:59:25
【问题描述】:
我正在使用一个包含输入数字的表单(它代表对象的价格)。
输入文本是用 JSF 创建的(代码不是我的):
<h:inputText value="#{myObject.unitPrice}" maxlength="10"
required="true" >
<f:ajax event="change" listener="#{myObject.doCalculateTotalPrice}" />
<f:validator validatorId="montantValidator" />
<f:convertNumber pattern="##0.00" locale="en"/>
</h:inputText>
此输入有效,但我们的客户想要使用点和逗号(不要问我为什么!)。是否可以使用模式来允许“,”和“。”?或者我应该创建一个 javascript 函数来用 '.' 替换 ',' 吗?
提前谢谢你。
【问题讨论】:
-
您可以创建自定义
Converter。但如果被要求做同样的事情,我只会走 JS 的路。 -
如果客户希望在预览数据时看到自己的逗号返回怎么办?
-
@AdrianMitev 那么唯一的选择是将值存储为文本并为数字创建不同的属性。从数据模型的角度来看,这将是令人毛骨悚然的。如果用户坚持,请尝试说服客户不要这样做。解释国际化,并且您将让用户设置其区域设置,以便所有数字(和日期)都以他的区域设置格式显示给他。
-
当然,还要向客户解释这意味着额外的工作量(成本/时间)
-
感谢您的所有回答,我已经创建了一个自定义转换器。我做了一件简单的事情:@Override public Object getAsObject(FacesContext pFacesContext, UIComponent pUIComponent, String pValue) { if (pValue != null) { return Double.parseDouble(pValue.replaceAll(",", ".")); } 返回空值; } 目前,我不计算数字。但是,第一个版本有效!
标签: javascript jsf jsf-2