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