[Seasar-user:6715] Re: [S2JSF1.1] S2JSFでツリーコンポーネントを使用するには?

Shinpei Ohtani [E-MAIL ADDRESS DELETED]
2007年 3月 16日 (金) 15:15:06 JST


大谷です。

下記の件、やはりTree2を使うよりはTeedaのTreeを使えるように
したほうが前向きなので、そちらの方向で調査します。


ちょっと時間がかかると思いますが、宜しくお願いします。


07/03/15 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 素早いご回答ありがとうございます。
>
> Tomahawk の tree2は試したのですがだめでした...
> すみません。スタックトレースを全部載せます。
>
> java.lang.ClassCastException: javax.faces.component.UIGraphic
>     at org.seasar.teeda.core.render.html.HtmlGraphicImageRenderer.encodeEnd(HtmlGraphicImageRenderer.java:53)
>     at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:349)
>     at org.apache.myfaces.renderkit.RendererUtils.renderChild(RendererUtils.java:450)
>     at org.apache.myfaces.custom.tree2.HtmlTreeRenderer.encodeNavigation(HtmlTreeRenderer.java:562)
>     at org.apache.myfaces.custom.tree2.HtmlTreeRenderer.encodeCurrentNode(HtmlTreeRenderer.java:346)
>     at org.apache.myfaces.custom.tree2.HtmlTreeRenderer.encodeTree(HtmlTreeRenderer.java:248)
>     at org.apache.myfaces.custom.tree2.HtmlTreeRenderer.encodeChildren(HtmlTreeRenderer.java:196)
>     at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340)
>     at org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:75)
>     at org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63)
>     at org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:85)
>     at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340)
>     at org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:75)
>     at org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63)
>     at org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:85)
>     at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340)
>     at org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:75)
>     at org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63)
>     at org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:85)
>     at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340)
>     at org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:75)
>     at org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63)
>     at org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:77)
>     at org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63)
>     at org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:85)
>     at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340)
>     at org.seasar.jsf.util.RenderUtil.encodeChild(RenderUtil.java:75)
>     at org.seasar.jsf.util.RenderUtil.encodeChildren(RenderUtil.java:63)
>     at org.seasar.jsf.render.html.HtmlElementRenderer.encodeChildren(HtmlElementRenderer.java:85)
>     at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:340)
>     at javax.faces.webapp.UIComponentTag.encodeChildren(UIComponentTag.java:244)
>     at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:212)
>     at org.seasar.jsf.processor.TagProcessorImpl.processTag(TagProcessorImpl.java:226)
>     at org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:217)
>     at org.seasar.jsf.processor.ElementProcessor.process(ElementProcessor.java:93)
>     at org.seasar.jsf.processor.TagProcessorImpl.processChildren(TagProcessorImpl.java:269)
>     at org.seasar.jsf.processor.TagProcessorImpl.processBodyTag(TagProcessorImpl.java:243)
>     at org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:213)
>     at org.seasar.jsf.processor.TagProcessorImpl.process(TagProcessorImpl.java:196)
>     at org.seasar.jsf.processor.ViewProcessor.process(ViewProcessor.java:174)
>     at org.seasar.jsf.runtime.ViewRendererImpl.renderView(ViewRendererImpl.java:102)
>     at org.seasar.jsf.application.S2ViewHandler.renderView(S2ViewHandler.java:123)
>     at org.seasar.jsf.lifecycle.LifecycleImpl.render(LifecycleImpl.java:205)
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:93)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:63)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
>     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>     at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>     at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>     at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>     at java.lang.Thread.run(Thread.java:595)
>
>
> [HTML]
> ...
>     <span m:inject="x:tree2"
>         m:value="#{sampleTree2Dto.treeTest}" m:var="node" m:varNodeToggler="x">
>         <span m:inject="f:facet" m:name="root-node">
>                 <span m:inject="h:outputText" m:value="#{node.description}"/>
>         </span>
>         <span m:inject="f:facet" m:name="folder-A">
>                 <span m:inject="h:outputText" m:value="#{node.description}"/>
>         </span>
>         <span m:inject="f:facet" m:name="document">
>                 <span m:inject="h:outputText" m:value="#{node.description}"/>
>         </span>
>     </span>
> ...
>
> [DTO]
>     public TreeNode getTreeTest() {
>         treeTest = new TreeNodeBase("root-node", "ROOT", false);
>         TreeNode personNode = new TreeNodeBase("folder-A", "AAA", false);
>         TreeNode document1 = new TreeNodeBase("document", "BBB", true);
>         document1.setDescription("../hello/hello.html");
>         TreeNode document2 = new TreeNodeBase("document", "CCC", true);
>         document1.setDescription("../start/index.html");
>         personNode.getChildren().add(document1);
>         personNode.getChildren().add(document2);
>         treeTest.getChildren().add(personNode);
>         return treeTest;
>     }
>
>
>
> "Shinpei Ohtani" <[E-MAIL ADDRESS DELETED]>さん:
> > 大谷です。
> >
> > https://www.seasar.org/issues/browse/TEEDA-267 にあるように、
> > レイアウト機能の影響で現在のTeedaCoreから、
> > TeedaExtensionの拡張機能を使うことができません。
> >
> > 次のバージョンまでには修正しますが、修正範囲がそれなりに大きいので
> > 時間がかかります。
> > もし待てないようであれば、TomahawkのTree2を使ってみるのはいかがでしょうか。
> >
> > お手数かけますが宜しくお願いします。
> >
> > 07/03/15 に [E-MAIL ADDRESS DELETED]<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > お世話になっております。
> > >
> > > S2JSF1.1 から Teedaの treeコンポーネントを使用しようと思い
> > > TeedaのHTMLサンプルをS2JSF化してみたところ一応表示はされました。
> > >
> > > [環境]
> > > ・Tomcat 5.5.20
> > > ・Seasar 2.4.11
> > > ・S2JSF 1.1.1
> > > ・Teeda 1.0.6
> > >
> > > ただし、ブラウザでリロードすると表示がおかしくなってしまいます。
> > > (ツリーがもう一つ表示されてしまう。)
> > >
> > > また、app.dicon で teedaExtension.dicon を includeしてしまうと
> > > 他の画面(S2JSF1.1 で作成)で ブラウザリロード時に
> > >
> > > java.lang.ClassCastException: org.seasar.teeda.extension.component.TViewRoot
> > >     at org.seasar.jsf.lifecycle.LifecycleImpl.hasEvent(LifecycleImpl.java:303)
> > >     at org.seasar.jsf.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:98)
> > >     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:92)
> > >     ....
> > >
> > > が発生してしまいます。
> > > なんでかな?と思い調べてみたところ、
> > >
> > > org.seasar.jsf.lifecycle.LifecycleImplのhasEvent(FacesContext context)
> > > メソッドにおいて context.getViewRoot(); の中身が
> > >
> > > ・teedaExtension.dicon includeした時
> > >   org.seasar.teeda.extension.component.TViewRoot
> > >
> > > ・teedaExtension.dicon includeしない時
> > >   org.seasar.jsf.component.S2UIViewRoot
> > >
> > > となっていたため、 S2JSF1.1 では teedaExtension を使用できないのだと
> > > 理解しました...
> > >
> > > ただ、どうしても画面にツリーを表示したいので困っています。
> > >
> > > S2JSFで Treeを表示したい場合、みなさんどのように作成されていますか?
> > > _______________________________________________
> > > Seasar-user mailing list
> > > [E-MAIL ADDRESS DELETED]
> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > >
> >
> >
> > --
> > =============================
> > Shinpei Ohtani
> > [E-MAIL ADDRESS DELETED]
> > =============================
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


-- 
=============================
Shinpei Ohtani
[E-MAIL ADDRESS DELETED]
=============================



Seasar-user メーリングリストの案内