我想知道如何验证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验证数字字段