我使用的表单包含一个输入数字(表示对象的价格)。
输入文本是用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>
这个输入有效,但我们的客户希望使用点和逗号(不要问我为什么!)。是否可以使用模式来允许"、"one_answers"."?或者我应该创建一个javascript函数来将","替换为"."吗?
提前谢谢。
谢谢TronchDeYack!
这里是一些代码来删除一个清晰的解决方案。
自定义自己的号码类型、号码格式。。。
转换器
@FacesConverter("decimalNumberConverter")
public class DecimalNumberConverter implements Converter {
public Object getAsObject( FacesContext fc, UIComponent uic, String value ) {
if( value != null )
return new BigDecimal( value.replace(',','.') );
return null;
}
public String getAsString( FacesContext fc, UIComponent uic, Object object ) {
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits( Integer.valueOf((String)uic.getAttributes().get("maxFractionDigits")) );
nf.setMinimumFractionDigits( Integer.valueOf((String)uic.getAttributes().get("minFractionDigits")) );
return nf.format(object);
}
}
输入
<p:inputText value="#{bean.myNumber}" >
<f:converter converterId="decimalNumberConverter" />
<f:attribute name="minFractionDigits" value="2"/>
<f:attribute name="maxFractionDigits" value="4"/>
</p:inputText>