Javascript 如何使用JSF授权输入文本中的逗号和点

Javascript 如何使用JSF授权输入文本中的逗号和点,javascript,jsf,jsf-2,Javascript,Jsf,Jsf 2,我正在使用一个包含输入编号的表单(它表示对象的价格) 输入文本是用JSF创建的(代码不是我的): 这个输入有效,但是我们的客户希望使用点和逗号(不要问我为什么!)。是否可以使用模式来允许“,”和“?”?或者我应该创建一个javascript函数来替换“,”吗 提前谢谢你。谢谢你,谢谢你 这里有一些代码,可以给出一个清晰的解决方案 自定义自己的号码类型、号码格式 转换器 @FacesConverter(“十进制数转换器”) 公共类小数转换器实现转换器{ 公共对象getAsObject(Face

我正在使用一个包含输入编号的表单(它表示对象的价格)

输入文本是用JSF创建的(代码不是我的):


这个输入有效,但是我们的客户希望使用点和逗号(不要问我为什么!)。是否可以使用模式来允许“,”和“?”?或者我应该创建一个javascript函数来替换“,”吗


提前谢谢你。

谢谢你,谢谢你

这里有一些代码,可以给出一个清晰的解决方案

自定义自己的号码类型、号码格式

转换器

@FacesConverter(“十进制数转换器”)
公共类小数转换器实现转换器{
公共对象getAsObject(FacesContext fc、uic组件uic、字符串值){
if(值!=null)
返回新的BigDecimal(value.replace(',',');
返回null;
}
公共字符串getAsString(FacesContext fc、uic组件uic、对象对象){
NumberFormat nf=NumberFormat.getInstance();
nf.setMaximumFractionDigits(Integer.valueOf((String)uic.getAttributes().get(“maxFractionDigits”));
nf.setMinimumFractionDigits(Integer.valueOf((String)uic.getAttributes().get(“minFractionDigits”));
返回nf.format(object);
}
}
输入



您可以创建自定义的
转换器
。但如果要求我也这样做,我只会选择JS。如果客户希望在预览数据时看到他的逗号,该怎么办?@AdrianMitev,那么唯一的选择就是将值存储为文本,并为数字创建不同的属性。从数据模型的角度来看,这会令人毛骨悚然。如果用户坚持,试着说服客户放弃。解释国际化,您将让用户设置其区域设置,以便所有数字(和日期)以其区域设置格式显示给他。当然,向客户解释这意味着额外的努力(成本/时间)。感谢您的回答,我已经创建了一个自定义转换器。我做了一件简单的事情:@Override public Object getAsObject(FacesContext pFacesContext,UIComponent pUIComponent,String pValue){if(pValue!=null){return Double.parseDouble(pValue.replaceAll(“,”);}return null;}目前,我不计算数字。但是,这第一个版本是有效的!
<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>