2013-01-21 59 views
2

信息,我有文本框:如何編輯檢票口組件來獲取有關我的形式處理

   add(new TextField<String>("awayScore", new PropertyModel<String>(value, "awayScore") { 

        private static final long serialVersionUID = 1L; 

        @Override 
        public String getObject() { 
         logger.info("textField"); 
         return super.getObject(); 
        } 
       })); 

,你可以看到我再補充記錄。

我沒有看到這裏有什麼問題,但是當我跑我的申請,我得到這個錯誤:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
    at org.toursys.web.PlayOffPage$PlayOffForm$2$1$1.getObject(PlayOffPage.java:135) 

行135包含:

return super.getObject(); 

我真的很困惑,因爲沒有重寫此作品

更新:

當我編輯我的代碼到:

Object value = super.getObject(); 
logger.error(value.getClass() + ""); 

這個代碼回報:

class java.lang.Integer 

這是非常奇怪,因爲根據編譯器本應返回字符串

+0

離開分數是一個整數嗎? –

+0

是的,它是整數 – hudi

+1

通過說新的PropertyModel 你做一個*承諾*返回值是一個字符串。這不會自動將整數轉換爲字符串。 –

回答

2

當你寫new PropertyModel<String>(value, "awayScore")你做出承諾,在您的valueawayScoreString。編譯器無法驗證您的聲明,並且沒有自動轉換。

AbstractPropertyModel方法getObject定義爲返回一個T將由Object被替換。這就是它仍然有效的原因。只要您重寫該方法以返回String,演員陣容將失敗。

相關問題