2012-03-14 46 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