1

关于思维导图和primefaces中的选择事件的一个小问题。

这是我的组件

        <h:form>
            <prime:mindmap value="#{artifactSelectionBackingBean.root}"
                style="width:100%;height:600px;border:1px solid black;"
                rendered="#{artifactSelectionBackingBean.visibleMindmap}">
                <prime:ajax event="select"
                    listener="#{artifactSelectionBackingBean.onNodeSelect}" />
                <prime:ajax event="dblselect"
                    listener="#{artifactSelectionBackingBean.onNodeDblselect}"
                    update="output" oncomplete="details.show()" />
            </prime:mindmap>

            <prime:dialog widgetVar="details" header="Node Details"
                resizable="true" modal="true" showEffect="fade" hideEffect="fade">
                <h:outputText id="output"
                    value="#{artifactSelectionBackingBean.selectedNode.data}" />
            </prime:dialog>
        </h:form>

现在其他方法完全从展示案例(http://www.primefaces.org/showcase/ui/mindmap.jsf)复制/粘贴。行为是思维导图呈现(使用正确的根和启动配置),但是,“选择”事件不做任何事情,并且“双重选择”返回一个空框。我究竟做错了什么?毕竟这是直接从展示柜中复制的......

另外,我使用的是 primefaces 3.5。任何帮助表示赞赏!

PS我知道我添加了一个渲染属性,但它是“真的”,因为我正确设置它并且思维导图在开始时正确渲染。

4

1 回答 1

1

好的!当我通过各种思维导图/primefaces 相关问题浏览stackoverflow 并拼命尝试应用任何解决方案时,我终于找到了答案。

显然,ManagedBean/Named bean(如果您使用 CDI)必须是 @SessionScoped 而不是 @RequestScoped(默认情况下)。如果是@RequestScoped,你会得到特殊的行为,并且某些事件(在我的情况下是“选择”事件)不会触发。

我不知道这是一个错误还是在文档中被小心遗漏了。但是,应该有人明确记录它!

于 2013-09-18T19:22:12.697 回答