在JSF 2.0中验证和显示十进制数字



我想知道如何验证inputText文本字段并查看它是否匹配十进制格式。以及在渲染时如何使用特定格式的格式化文本字段

我已经做到了:

    <rich:column id="soldes_comptables">
                <f:facet name="header">
                    <h:outputText value="Solde Comptable" />
                </f:facet>
                <h:inputText id="inputTextSC" value="#{file.soldes_comptables}"
                    label="Montant"
                    style="border-color:#F2F3F7;"
                    validatorMessage="The number must be decimal eg: 000.00"
                    >
                    <f:convertNumber pattern="#,###,##0.00"/>
                    <f:validateRegex pattern="^[0-9]+(.[0-9]{1,2})?$"></f:validateRegex>
                    <rich:validator />
                </h:inputText>
                <rich:message for="inputTextSC"/>
            </rich:column>

但它没有按我的意愿工作:(.请帮助我

您正在混合验证和转换。<f:validateRegex>仅适用于String值,而不适用于Number值,但是,<f:convertNumber>事先已经将其从String转换为Number,因此<f:validateRegex>对您来说相当无用。您应该将其删除,并将消息指定为converterMessage

<h:inputText ... converterMessage="The number must be decimal eg: 000.00">
    <f:convertNumber pattern="#,###,##0.00"/>
</h:inputText>

另一种选择是创建一个扩展NumberConverter的自定义转换器,并基于一些正则表达式模式匹配在不正确的输入格式上抛出ConverterException

另请参阅:

  • 验证JSF中的小数输入
  • 如何在JSF页面中使用validateRegex验证数字字段

最新更新