Jsf 2 f:具有属性模式的convertNumber

Jsf 2 f:具有属性模式的convertNumber,jsf-2,Jsf 2,我正在尝试使用以下代码 <h:inputText id="amount" value="#{bean.amount}"> <f:convertNumber pattern="##0.00" /> </h:inputText> 我希望这会给4位数积分的数字带来错误。但它乐于接受这些数字,不会给出转换错误 你知道为什么吗?也许你把验证和转换混为一谈了。转换器的目的是描述数字的显示方式,如果用户输入了错误的数据类型,则通常会引发转换错误 例如,您可以使

我正在尝试使用以下代码

<h:inputText id="amount" value="#{bean.amount}">
    <f:convertNumber pattern="##0.00" />
</h:inputText>

我希望这会给4位数积分的数字带来错误。但它乐于接受这些数字,不会给出转换错误


你知道为什么吗?

也许你把验证和转换混为一谈了。转换器的目的是描述数字的显示方式,如果用户输入了错误的数据类型,则通常会引发转换错误

例如,您可以使用:

<h:inputText id="amount" value="#{bean.amount}">
    <f:convertNumber pattern="##0.00" maxIntegerDigits="4"/>
</h:inputText>

但如果输入4444,则不会引发转换错误。转换器会将其转换为“444.00”。但在您的支持bean中,值将正确地存储为4444

您需要的是验证器:

<h:inputText value="#{controllerBean.number}" >
    <f:convertNumber pattern="##0.00" maxIntegerDigits="3"/>
    <f:validateDoubleRange maximum="1000"/>
</h:inputText>

谢谢Matt,我将bean.amount更改为
@位(整数=3,分数=2)私有的BigDecimal金额并使用BigDecimalConverter而不是NumberConverter。