如何使用JSF对输入文本中的逗号和句点进行授权



我使用的表单包含一个输入数字(表示对象的价格)。

输入文本是用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>

相关内容

  • 没有找到相关文章

最新更新