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

Diy*_*yae 0 jsf

我想知道如何验证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>
Run Code Online (Sandbox Code Playgroud)

但它不能按我的意愿工作:(请帮助我

Bal*_*usC 5

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

<h:inputText ... converterMessage="The number must be decimal eg: 000.00">
    <f:convertNumber pattern="#,###,##0.00"/>
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

另一种方法是创建一个自定义转换器,根据一些正则表达式模式匹配扩展NumberConverter并抛出ConverterException不正确的输入格式.

也可以看看: