Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在单击树节点时打开新的div_Java_Javascript_Jsf_Jsf 2 - Fatal编程技术网

Java 如何在单击树节点时打开新的div

Java 如何在单击树节点时打开新的div,java,javascript,jsf,jsf-2,Java,Javascript,Jsf,Jsf 2,我有一棵树: JSF代码 我感兴趣的是如何打开包含节点附加信息的新div。我想给用户浏览节点的机会。当他单击树右侧的节点以查看附加层中的附加信息时。我怎么能做到 我找到了标签属性onNodeClick,它用于在单击树节点时调用JavaScript。也许我可以用JS开一个新部门 不起作用的解决方案 我测试了此代码,但它不起作用: <h:form id="form"> <p:tree id="tree" value="#{TreeViewController.root

我有一棵树:

JSF代码

我感兴趣的是如何打开包含节点附加信息的新div。我想给用户浏览节点的机会。当他单击树右侧的节点以查看附加层中的附加信息时。我怎么能做到

我找到了标签属性
onNodeClick
,它用于在单击树节点时调用JavaScript。也许我可以用JS开一个新部门

不起作用的解决方案 我测试了此代码,但它不起作用:

<h:form id="form">  

    <p:tree id="tree" value="#{TreeViewController.root}" var="node" dynamic="true" cache="true" animate="true">  
        <p:ajax event="select" listener="#{TreeViewController.onNodeSelect}" update="outputComponent" />
        <p:treeNode>                            
            <h:outputText value="#{node}"/>  
        </p:treeNode> 
    </p:tree>

    <p:outputPanel id="outputComponent">
        <h:outputText value="#{TreeViewController.onNodeSelect}" />
    </p:outputPanel>

</h:form>  

public String onNodeSelect(NodeSelectEvent event) {
        String node = event.getTreeNode().getData().toString();

        return node;
    }

nodeselect上的公共字符串(NodeSelectEvent事件){
String node=event.gettrenode().getData().toString();
返回节点;
}
所有内容都在文档中(下面的代码是它的摘录)。您可以使用onNodeClick调用自定义JavaScript方法来显示“div”,或者,我建议您使用ajax事件

<p:ajax event="select" listener="#{treeBean.onNodeSelect}" update="outputComponent" />
然后将输出组件放置到位,例如:

<p:outputPanel id="outputComponent">
    <!-- reference the bean in which you put your informatnoi in the onNodeSelect listener-->
</p:outputPanel>

所有内容都在文档中(下面的代码是它的摘录)。您可以使用onNodeClick调用自定义JavaScript方法来显示“div”,或者,我建议您使用ajax事件

<p:ajax event="select" listener="#{treeBean.onNodeSelect}" update="outputComponent" />
然后将输出组件放置到位,例如:

<p:outputPanel id="outputComponent">
    <!-- reference the bean in which you put your informatnoi in the onNodeSelect listener-->
</p:outputPanel>


我不知道您是否可以将ajax行为添加到此
onNodeClick
方法中,以更新
或另一个适用于您的
的UIContainer,从而完成您需要的操作。如果不能,只需编写一个隐藏链接(
)在
onNodeClick
js方法中,单击此链接处理数据,以显示并更新右侧的UIContainer。我不知道您是否可以将ajax行为添加到此
onNodeClick
方法中,以更新
或另一个正好位于您的
的UIContainer,以便执行您需要的操作。如果不能,只需编写一个隐藏链接(
),然后在
onNodeClick
js方法中单击此链接即可处理数据,以显示并更新右侧的UIContainer。我更新了帖子。对不起,我对Java不熟悉。您是否看到了代码无法工作的问题?首先,我希望您将java方法放入名为TreeViewController的托管bean中。第二,事件侦听器方法的方法签名必须保持不变,这意味着它的返回类型仍为空,如示例所示。第三,如果要更改侦听器方法“onNodeSelect”中的属性或类似内容,可以在已添加的h:outputText组件中引用该属性。不能将侦听器方法用于输出组件的值绑定。我建议你从JSF教程开始,以获得这些基础知识,否则你将很难管理它。对不起,我对Java不熟悉。您是否看到了代码无法工作的问题?首先,我希望您将java方法放入名为TreeViewController的托管bean中。第二,事件侦听器方法的方法签名必须保持不变,这意味着它的返回类型仍为空,如示例所示。第三,如果要更改侦听器方法“onNodeSelect”中的属性或类似内容,可以在已添加的h:outputText组件中引用该属性。不能将侦听器方法用于输出组件的值绑定。我建议您从JSF教程开始,以获得这些基础知识,否则您将很难管理它。
<p:outputPanel id="outputComponent">
    <!-- reference the bean in which you put your informatnoi in the onNodeSelect listener-->
</p:outputPanel>