2012-03-14 32 views
0

我尝试使用下面的代码F:convertNumber与属性模式

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

我期待这将给错误,用4位数字积分。但它愉快地接受这样的数字,并且不会给转换错误。

任何想法为什么?

回答

2

也许你正在将验证与转换混合。转换器的目的是描述如何显示数字,并且如果用户输入了错误的数据类型,则通常会抛出转换错误。

您可以使用例如:

<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> 
+0

感谢马特,我改变bean.amount为'@digits(整数= 3,分数= 2 )private BigDecimal amount;'并且使用** BigDecimalConverter **而不是** NumberConverter **。 – 2012-03-15 06:42:56