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。