如何编辑wicket组件以获取有关进程的信息

时间:2013-01-21 08:22:15

标签: java wicket

在我的表单中我有textField:

                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

这真的很奇怪,因为根据编译器,这应该返回String

1 个答案:

答案 0 :(得分:2)

当您撰写new PropertyModel<String>(value, "awayScore")时,您承诺awayScore中的valueString。编译器无法验证您的声明,也没有自动转换。

AbstractPropertyModel中,方法getObject被定义为返回TObject将替换为String。这就是它仍然有效的原因。一旦你重写方法以返回{{1}},演员表就会失败。