初期処理でConditionBeanを初期化
http://d.hatena.ne.jp/kimpo/20080606#1212718476
を元に、BehabiorSelectorを利用して、CBを初期化・・・・
としたんだけど、
teedaがわけのわからないループをするようになった・・・
layout部分とか、Formとかが二個ずつ表示される。
<html xmlns:te="http://www.seasar.org/teeda/extension"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="../css/style.css" type="text/css"/> </head> <body> <table border="0" width="100%"> <tr> <td> <te:include src="/layout/menu.html"/> </td> </tr> <tr> <td> <te:includeChildBody/> </td> </tr> </table> </body></html>
こんなテンプレートが描画されると
<html xmlns:te="http://www.seasar.org/teeda/extension"> <head></head> <body> <table width="100%" border="0"> <tr> <td> <!--header--> </td> </tr> <tr> <td> <table width="100%" border="0"> <tr> <td> <!--header--> <!--header--> </td> </tr> <tr> <td> <!--ChildBody--> <!--ChildBody--> </td> </tr> </table> </td> </tr> </table> </body></html>
これは、dbflute関係なし。
というかね。きっとね、
TeedaConfigureListenerを利用したのに、
TeedaServletも使っているってのが原因な気がする。
なんか、二回ずつ描画されている現象と妙にマッチするんだよね・・・
んじゃまぁ、普通のListenerに・・・
って思ったけど、そりゃぁListenerの方がさきだもの。
TeedaServletの処理より先によばれちゃうじゃんか。
というわけで、エラーだしょ?
んだば、あれかい?Servletをやめて、Listenerで初期化にすりゃぁいいのかい?
とおもったけか、S2Axisってのがーこまるってなもんだ。
いやまぁつかってねーけっじょも、
こまるってーいわれちゃぁしょうがあんめぇ。
んだば、TeedaServlet拡張するべよ。
public class OrigServlet extends TeedaServlet { private static final long serialVersionUID = 1L; @Override public void init() { super.init(); S2Container container = SingletonS2ContainerFactory.getContainer(); BehaviorSelector behaviorSelector = (BehaviorSelector)container.getComponent(BehaviorSelector.class); behaviorSelector.initializeConditionBeanMetaData(); } }
<servlet> <servlet-name>teedaServlet</servlet-name> <!--<servlet-class>org.seasar.teeda.core.webapp.TeedaServlet</servlet-class>--> <servlet-class>hoge.mokkouyou.games.common.OrigServlet</servlet-class>
はたして、この初期化の効果がどの程度なのかはわかりません。
というかおそらく私のアプリじゃぁ、たいして変わんないと思う。
安心をとるか、冒険するか?
といったところでしょうか。
ひとまず、動作と、layoutの二重描画ってのはぁ回避できたべな。