WebSession ClassCastException

时间:2012-07-17 07:58:33

标签: session wicket classcastexception wicket-1.5

我一直在尝试将Wicket的WebSession子类化,因此我可以实现一个基本的身份验证系统。我遵循了Wicket参考库中的指南。当我在我的WebPage中尝试以下操作时,我得到一个ClassCastException:

((AppSession)Session.get()).setUid()

以下是完整错误:

java.lang.ClassCastException: org.apache.wicket.protocol.http.WebSession cannot be cast to com.example.webapp.AppSession

我一直在网上搜索几个小时,并尽我所能。我真的很感激一些帮助。另外,如果有更好的方法,请告诉我。我是wicket的新手。

谢谢。

AppSession.java

public final class AppSession extends WebSession {
    private Integer uid;

    public AppSession(Request request) {
        super(request);
    }

    public final Integer getUid() {
        return uid;
    }

    public final void setUid(Integer uid) {
        this.uid = uid;
    }

    public static AppSession get() {
        return (AppSession)Session.get();
    }
}

App.java

public class App extends WebApplication {
    public App() {
        super();
        new AnnotatedMountScanner().scanPackage("com.example.webapp").mount(this);
    }

    @Override
    public Session newSession(Request request, Response response) {
        return new AppSession(request);     
    }

    @Override
    public Class getHomePage() {
        return null;
    }
}

1 个答案:

答案 0 :(得分:1)

我也有自己的会话类,来自WebSession。我做了一些与你不同的事情。

添加AppSession方法:

/**
 * Gets the session for the calling thread.
 * @return
 *   The session for the calling thread.
 */
public static AppSession get()
{
  return (AppSession)Session.get();
}

您可能想尝试

AppSession ssnSession = AppSession.get();
ssnSession.setUid(...);

而不是你的单线电话。

您是否检查了(App)会话类的包?

(我个人不会为null返回App.getHomePage()。)

这有什么帮助?