class DependencyProvider<T> implements Provider<T>, Serializable { private String typeName; public final DependencyProvider(Class dependencyType) { typeName=dependencyType.getName(); }
public T get() { return ((MyApplication)Application.get()).getDependency(Class.forName(typeName)); } } then you can do final Provider provider=new DependencyProvider(Dao.class); new Form("foo") { onsubmit() { provider.get().foo(bar); }} notice that the dependencylocator instance can be serialized without serializing the dependency iitself... thats the important part. -igor On Dec 19, 2007 11:23 PM, mfs <[EMAIL PROTECTED]> wrote: > > >the work around is to pass in a locator that can be serialized without > >serializing the dependency yet knows how to look it up when it is > >needed. kinda like a serializable lookup. this is what wicket's > >@SpringBean proxies do. the other option is to have that service > >available via a static lookup. > > Can you give an example of this serializable locator ? where i dont need to > serialize the dependency..still trying to get as to how would i acheive > this.. > > Thanks in advance.. > > > -igor > > > > > > > > Thanks in advance > > > > > > > > igor.vaynberg wrote: > > > > > > your form anonymous class keeps the ref to your login svc instance > > > > > > -igor > > > > > > On 12/13/07, mfs <[EMAIL PROTECTED]> wrote: > > >> > > >> Ok...so here is the LoginPanel class...with the constructor i was > > >> referring > > >> to .. further the implementation for I_LoginService (i.e. > > >> LoginService...on > > >> which the serializable error is pointing to) is being passed over from > > >> the > > >> caller component... > > >> > > >> > > >> public class LoginPanel extends Panel { > > >> > > >> LoginVO loginVO = null; > > >> > > >> public LoginPanel(String id, final String targetPage, final > > >> I_LoginService > > >> loginServiceHandler) { > > >> super(id); > > >> loginVO = new LoginVO(); > > >> setModel(new CompoundPropertyModel(loginVO)); > > >> > > >> Form loginForm = new Form("loginForm") { > > >> protected void onSubmit() { > > >> > > loginServiceHandler.authenticate(loginVO.getUserName(), > > >> loginVO.getPassword()); > > >> } > > >> }; > > >> > > >> loginForm.add(new RequiredTextField("userName")); > > >> loginForm.add(new PasswordTextField("password")); > > >> > > >> Button loginButton = new Button("loginButton") { > > >> public void onSubmit() { > > >> } > > >> }; > > >> > > >> loginForm.add(loginButton); > > >> add(loginForm); > > >> > > >> } > > >> > > >> > > >> > > >> mfs wrote: > > >> > > > >> > Guys, > > >> > > > >> > Not sure why, but wicket is giving me an error "Field that is not > > >> > serializable" on one of constructor attributes (of a panel) which is > > an > > >> > implementation to an interface...i wonder why is that ? The attribute > > >> is > > >> > not used as a model or anything its just a serviceHandler which i am > > >> > passing to the page-component. > > >> > > > >> > Error log > > >> > ---- > > >> > > > >> > private final org.xyz.login.api.I_LoginService > > >> > org.xyz.login.web.LoginPane > > >> > l$1.val$loginServiceHandler [class=org.xyz.service.LoginService] > > <----- > > >> > field that is > > >> > not serializable > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:347) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:393) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:393) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:615) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:538) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.SerializableChecker.writeObjectOverride(SerializableChecker.jav > > >> > a:683) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:298) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.IObjectStreamFactory$1.writeObjectOverride(IObjectStreamFactory > > >> > .java:74) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:298) > > >> > at > > >> > > > >> > > org.apache.wicket.util.lang.Objects.objectToByteArray(Objects.java:1103) > > >> > at > > >> > > > >> > > org.apache.wicket.protocol.http.pagestore.AbstractPageStore.serializePage(AbstractPageSto > > >> > re.java:200) > > >> > at > > >> > > > >> > > org.apache.wicket.protocol.http.pagestore.DiskPageStore.storePage(DiskPageStore.java:700) > > >> > > > >> > at > > >> > > > >> > > org.apache.wicket.protocol.http.SecondLevelCacheSessionStore$SecondLevelCachePageMap.put( > > >> > SecondLevelCacheSessionStore.java:340) > > >> > at > > org.apache.wicket.Session.requestDetached(Session.java:1412) > > >> > at > > org.apache.wicket.RequestCycle.detach(RequestCycle.java:957) > > >> > at > > org.apache.wicket.RequestCycle.steps(RequestCycle.java:1195) > > >> > at > > >> org.apache.wicket.RequestCycle.request(RequestCycle.java:500) > > >> > at > > >> > > > >> > > org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:261) > > >> > at > > >> > > > >> > > org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:126) > > >> > at > > javax.servlet.http.HttpServlet.service(HttpServlet.java:690) > > >> > at > > javax.servlet.http.HttpServlet.service(HttpServlet.java:803) > > >> > at > > >> > > > >> > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j > > >> > ava:290) > > >> > at > > >> > > > >> > > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > > >> > > > >> > at > > >> > > > >> > > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) > > >> > at > > >> > > > >> > > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) > > >> > at > > >> > > > >> > > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > > >> > at > > >> > > > >> > > org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:347) > > >> > at > > >> > > > >> > > org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:209) > > >> > at > > >> > > > >> > > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) > > >> > at > > >> > > > >> > > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > >> > at > > >> > > > >> > > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) > > >> > at > > >> > > > >> > > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) > > >> > at > > >> > > > >> > > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja > > >> > va:581) > > >> > at > > >> > > > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > > >> > at java.lang.Thread.run(Thread.java:595) > > >> > Caused by: java.io.NotSerializableException: > > >> > taxcient.registration.service.LoginService > > >> > at > > >> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079) > > >> > at > > >> > java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079) > > >> > at > > >> > java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347) > > >> > at > > >> > > > >> > > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079) > > >> > at > > >> > java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) > > >> > at > > >> > > > >> > > org.apache.wicket.util.io.IObjectStreamFactory$1.writeObjectOverride(IObjectStreamFactory > > >> > > > >> > > >> -- > > >> View this message in context: > > >> > > http://www.nabble.com/Getting-Error-%22Field-not-serializable%22-on-one-of-the-constructor-attrib---tp14327323p14328035.html > > >> Sent from the Wicket - User mailing list archive at Nabble.com. > > >> > > >> > > >> --------------------------------------------------------------------- > > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > > >> For additional commands, e-mail: [EMAIL PROTECTED] > > >> > > >> > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > -- > > View this message in context: > > http://www.nabble.com/Getting-Error-%22Field-not-serializable%22-on-one-of-the-constructor-attrib---tp14327323p14339719.html > > > > Sent from the Wicket - User mailing list archive at Nabble.com. > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > -- > View this message in context: > http://www.nabble.com/Getting-Error-%22Field-not-serializable%22-on-one-of-the-constructor-attrib---tp14327323p14431890.html > > Sent from the Wicket - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]