Странное поведение Дерево внутри пользовательского интерфейса: повтор или лед: panelseries - PullRequest
0 голосов
/ 10 марта 2011

Таким образом, у меня в основном есть дерево внутри разборного и итерируется с помощью интерфейса ui: repeat или ice: panelSeries, потому что они в значительной степени имеют одинаковую структуру

<ui:repeat value="#{navigationBean.navigationPanels}" var="panel"  >
        <ice:panelCollapsible immediate="true" expanded="#{panel.expanded}" >
            <f:facet name="header">
                <ice:panelGroup>
                    <ice:outputText value="#{panel.title}" />
                </ice:panelGroup>
            </f:facet>
            <ice:panelGroup styleClass="treeContainer">
                <ice:tree id="tree" value="#{panel.treeModel}" var="item"
                    hideRootNode="true" hideNavigation="true" 
                    imageDir="#{facesContext.externalContext.requestContextPath}/xmlhttp/css/xp/css-images/">
                    <ice:treeNode>
                        <f:facet name="icon">
                            <ice:panelGroup style="display: inline">
                                <h:graphicImage
                                    value="#{userPreferences.imageDirectory}/#{item.userObject.icon}" />
                            </ice:panelGroup>
                        </f:facet>
                        <f:facet name="content">
                            <ice:panelGroup style="display: inline">
                                <ice:outputLink value="#{item.userObject.url}">
                                    <ice:outputText styleClass="treeNode" value="#{item.userObject.text}" />
                                </ice:outputLink>
                            </ice:panelGroup>
                        </f:facet>
                    </ice:treeNode>
                </ice:tree>
            </ice:panelGroup>
        </ice:panelCollapsible>
        </ui:repeat>

Проблема в том, что когда я разворачиваюсь или сворачиваюсь, панель выдает мне ужасную ошибку, вот стек:

java.lang.NullPointerException
    at com.icesoft.faces.component.tree.Tree.visitRows(Tree.java:1447)
    at com.icesoft.faces.component.tree.Tree.visitTree(Tree.java:1402)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
    at com.sun.faces.facelets.component.UIRepeat.visitTree(UIRepeat.java:606)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
    at javax.faces.component.UIForm.visitTree(UIForm.java:331)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1487)
    at com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:258)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:245)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Есть идеи, почему он может так себя вести?

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

Возможно, проблема не возникает при рендеринге.Это может произойти при создании дерева компонентов на стороне сервера.В таких случаях вы должны убедиться, что xml-тег <ice:tree../> вообще не анализируется.

Поэтому попробуйте:

<c:if test="#{not empty panel.treeModel}"> <ice:tree ../> </c:if>

Это работает не во всех случаях.Так что попробуйте: -)

0 голосов
/ 10 марта 2011

Согласно источнику , #{panel.treeModel} оценивается как ноль.

Попробуйте <ice:tree rendered="#{panel.treeModel != null} ... и посмотрите, что получится.

...