在我的 Wicket 頁面中,我有:@SpringBeanprotected J2EContext j2EContext;在配置中我有:@Bean@RequestScopepublic J2EContext getWebContext() { return new J2EContext(request, response, getSessionStore());}@Beanpublic RequestContextListener requestContextListener() { return new RequestContextListener();}應用程序啟動正常,但是當我轉到主頁時出現異常:Caused by: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:931) at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:631) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:329) at net.sf.cglib.proxy.Enhancer.generate(Enhancer.java:492) at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93) at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91) at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) at java.util.concurrent.FutureTask.run(FutureTask.java:266)當檢票口要注入J2EContext豆子時。我認為這是因為頁面在@RequestScope創建此 bean 之前正在渲染。知道如何解決這個問題嗎?
1 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
注入 bean Wicket 以兩種不同的方式創建代理:
如果 bean 是一個接口,則創建一個標準 java.lang.reflect.Proxy
如果 bean 是一個類,默認使用 cglib
不幸的是,cglib 不能為沒有默認構造函數的類創建代理。然而,還有第三種方法可以解決這個問題。只需將 objenesis 作為依賴項添加到您的項目中,Wicket 就會使用它而不是 cglib。
添加回答
舉報
0/150
提交
取消