2013-01-21 27 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,演员阵容将失败。

相关问题