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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 3月 15日 (木) 17:22:39 JST


素早いご回答ありがとうございます。

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 メーリングリストの案内