我想要在用户按下按钮时设置节点的名称。添加节点会将此对象的名称作为labelName,因此这是按钮的代码:
public void makeCube() {
cubeService.create_cube(cubUpdate);
}
这是我的TreeNode:
<p:tree id="tree1" value="#{treeBean.model}"
var="node"
dynamic="true"
selectionMode="single"
selection="#{treeBean.selectedNode}" onNodeClick="selectNode(node);"
>
<p:ajax event="select" listener="#{treeBean.onNodeSelect}" />
<p:ajax event="expand" listener="#{treeBean.onNodeExpand}" />
<p:ajax event="collapse" listener="#{treeBean.onNodeCollapse}" />
<p:treeNode type="#{NodeType.CUBE_TYPE}" >
<h:outputText id="cubName" value="#{node}" onclick="selectNode(this); " />
</p:treeNode>
</p:tree>
最后,这是我的表单,用户将放置一个对象的名称,当他点击“添加”时应保存该对象并获取其名称,将其设置为Node的labelName名称。 / p>
<h:form id="form2" >
<p:panelGrid columns="2" id="panelCube">
<p:outputLabel value="Name :" for="name_cube"/>
<p:inputText id ="name_cube" value="#{cubeMan.cubUpdate.name_cube}" required="true"/>
<p:outputLabel value="Description :" for="description_cube"/>
<p:inputText id ="description_cube" value="#{cubeMan.cubUpdate.description_cube}" required="true"/>
<p:commandButton value="Add" actionListener="#{cubeMan.makeCube()}" update=":formCube" >
</p:commandButton>
</h:form>
我必须使用相同形式的按钮来更改标签名称:
public void changeName(){
String res =selectedNode.getData().toString();
if(selectedNode.getData().toString() !=null){
res=cubMang.cubUpdate.getName_cube();
TreeNode node0 = new DefaultTreeNode(new TreeNodeType().getCUBE_TYPE(),res, null);
}
在我的xhtml页面中我把它:
<p:commandButton value="Add tst" actionListener="#{treeBean.changeName()}" update=":form1:tree1:cubName" />
对于Treenode,我把它放在:
<h:form id="form1">
<p:tree id="tree1" value="#{treeBean.model}"
var="node"
dynamic="true"
selectionMode="single"
selection="#{treeBean.selectedNode}" onNodeClick="selectNode(node);"
>
<p:ajax event="select" listener="#{treeBean.onNodeSelect}" />
<p:ajax event="expand" listener="#{treeBean.onNodeExpand}" />
<p:ajax event="collapse" listener="#{treeBean.onNodeCollapse}" />
<p:treeNode type="#{NodeType.CUBE_TYPE}" >
<h:outputText id="cubName" value="#{node}" onclick="selectNode(this); " />
</p:treeNode>
</p:tree>
但是当我单击按钮时没有任何反应,但是当我点击树中以创建最后一个相同类型的新节点时,它将采用新名称。那么我该怎么做才能纠正这个问题呢?