2012-07-31 17 views
1

我有一個表單輸入文本綁定到綁定到的窗體的Integer字段的問題。如果我在輸入文本中輸入了錯誤的數字(例如:「12b」),我有一個綁定異常。所以,我設置我的控制器@InitBinder這樣:Spring MVC:manage BindingException

@InitBinder 
    public void initBinder(WebDataBinder binder) { 
     binder.registerCustomEditor(Integer.class, new CustomIntegerBinder()); 
    } 

凡CustomIntegerBinder被實現如下:

public class CustomIntegerBinder extends PropertyEditorSupport { 

     @Override 
     public void setAsText(String text) throws IllegalArgumentException { 
      try { 
       setValue(Integer.parseInt(text)); 
      } catch (Exception e) { 
       //I WANT TO ADD ERROR TO THE ERROR LIST! 
      } 
     } 

     @Override 
     public String getAsText() { 
      return getValue().toString(); 
     } 
    }   

我的問題是:我怎麼能在添加消息錯誤的成功錯誤列表,以便轉換錯誤不會導致應用程序崩潰,而是要在jsp中的「errors」標記中打印一條消息?

謝謝!

回答

0

setAsText方法應該拋出一個IllegalArgumentException(如方法簽名所示),如果該值不能從文本中設置。

如果您從catch中丟失IllegalArgumentException,那麼Spring應該爲您添加錯誤。

+0

_If you _... throw? – jelies 2012-07-31 08:37:44

+0

@jelies謝謝,修正 – MattR 2012-07-31 08:39:06

+0

我沒有嘗試,但我有瀏覽器中的堆棧跟蹤報告IllegalArgumentException。在堆棧跟蹤中,我可以閱讀: 「對象中的字段錯誤... java.lang.IllegalArgumentException:錯誤的值」 也就是說,在堆棧跟蹤中,我擁有所有需要的信息(關於字段和錯誤的類型),但我不知道我是否阻止在瀏覽器中打印堆棧跟蹤,以及如何獲取有關錯誤的信息並將它們添加到錯誤列表中。 – Ulisse 2012-07-31 08:50:49