0
我尝试使用下面的代码F:convertNumber与属性模式
<h:inputText id="amount" value="#{bean.amount}">
<f:convertNumber pattern="##0.00" />
</h:inputText>
我期待这将给错误,用4位数字积分。但它愉快地接受这样的数字,并且不会给转换错误。
任何想法为什么?
我尝试使用下面的代码F:convertNumber与属性模式
<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>
感谢马特,我改变bean.amount为'@digits(整数= 3,分数= 2 )private BigDecimal amount;'并且使用** BigDecimalConverter **而不是** NumberConverter **。 – 2012-03-15 06:42:56