2013-02-13 39 views
1

我有一個連接到int類型的Bean屬性的InputText組件。 不過,我被迫使用NumberConverter當使用分數或分隔符時,需要<f:convertNumber>拋出錯誤

即使我指定integerOnly = true,它通過刪除小數部分接受雙打和沒有錯誤的驗證階段拋出

我的問題是,有沒有一種方式NumberConverter拋出轉換異常和錯誤消息(優選客戶端,我的意思是,當我標籤字段外的)

我們使用JSF 1.2

(實際上,NumberConverter的的getAsObject()具有此代碼這應該是拋出異常w母雞從BigDecimal的轉換爲整數,當有精密

GenericConverterFactory fac = GenericConverterFactory .getCurrentInstance(); 
     try 
     { 
     value = fac.convert(value, expectedType); 
     } 

) 
+0

如果調試它什麼happends? – 2013-02-13 08:52:26

回答

4

虧損創建延伸,其中,你委託給NumberConverter前檢查字符串值,然後用它代替默認NumberConverter自定義轉換。

public class MyNumberConverter extends NumberConverter { 

    public MyNumberConverter() { 
     setIntegerOnly(true); 
    } 

    @Override 
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) { 
     if (submittedValue != null && !submittedValue.matches("[0-9]+")) { 
      throw new ConverterException("Please enter digits only"); 
     } 

     return super.getAsObject(context, component, submittedValue); 
    } 

} 
<f:converter converterId="myNumberConverter" />