maga****@hagan*****
maga****@hagan*****
2011年 8月 10日 (水) 23:48:13 JST
お世話になっています。船田です。 Applicationクラスで, addComponentInitializationListenerの引数で 匿名クラスを持たせた匿名クラスのリスナを使用しました。 addComponentInitializationListener(new IComponentInitializationListener() { @Override public void onInitialize(Component component) { component.add(new AbstractAjaxBehavior() { @Override public void onRequest() { // } }); } }); ページをシリアライズするタイミングで 匿名クラスであるAbstractAjaxBehaviorをシリアライズしようとしますが、 ネスト元であるIComponentInitializationListenerがSerializableでもIClusterableでもないため SerializableCheckerに引っかかります。 org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException: Unable to serialize class: com.mycompany.wickettest.MyApplication$1 この場合 public interface MyComponentInitializationListener extends IComponentInitializationListener, Serializable public class MyAjaxBehavior extends AbstractAjaxBehavior という具合にどちらかを匿名クラスにしないで実装するべきなのでしょうか? IComponentInitializationListener のほかに IComponentInstantiationListener IComponentOnAfterRenderListener IComponentOnBeforeRenderListener も同じようにWicketNotSerializableExceptionが投げられます。 多少、使い方が違うとはいえ IHeaderContributorには IClusterableがついているので ListenerクラスにもIClusterableがつくべきなのでは、と思ってます。