我想创建具有对话框表单功能的添加子项按钮。
在页面上有树形对话框和模式对话框。在树的每个节点上都是创建子按钮。如果单击创建子按钮,将显示模式形式,其中parentId将设置为单击按钮的节点的ID。
树:
<h:form id="TestGroupListForm">
<p:tree value="#{testTreeController.root}" var="node" dynamic="true" cache="false"
selectionMode="single" selection="#{treeBean.selectedNode}" id="tree">
<p:treeNode>
<h:outputText value="#{node.getName()}" /> <p:commandButton id="createButton#{node.getIdTestGroup()}" icon="ui-icon-plus" value="#{bundle.Create}" update="tree" oncomplete="TestGroupCreateDialog.show()"/>
</p:treeNode>
</p:tree>
</h:form>
对话框:
<h:form id="TestGroupCreateForm">
<h:panelGroup id="display">
<p:panelGrid columns="2" >
<p:outputLabel value="#{bundle.CreateTestGroupLabel_name}" for="name" />
<p:inputText id="name" value="#{testGroupController.selected.name}" title="#{bundle.CreateTestGroupTitle_name}" />
<h:inputHidden id="parentId" value="#{testGroupController.selected.parentId}" />
</p:panelGrid>
<p:commandButton actionListener="#{testGroupController.saveNew}" value="#{bundle.Save}" update="display,:TestGroupListForm:tree,:growl" oncomplete="handleSubmit(xhr,status,args,TestGroupCreateDialog);"/>
<p:commandButton value="#{bundle.Cancel}" onclick="TestGroupCreateDialog.hide()"/>
</h:panelGroup>
</h:form>
</p:dialog>
我想要点击
<p:commandButton id="createButton#{node.getIdTestGroup()}" icon="ui-icon-plus" value="#{bundle.Create}" update="tree" oncomplete="TestGroupCreateDialog.show()"/>
将设置以下值:
<h:inputHidden id="parentId" value="#{testGroupController.selected.parentId}" />
更新
我必须使用动作侦听器testGroupController.nodeListener来设置新项目的parentId。
<p:commandButton process="@this" id="createButton" actionListener="#{testGroupController.nodeListener}" icon="ui-icon-plus" value="#{bundle.CreateGroup}" update=":TestGroupCreateForm" oncomplete="TestGroupCreateDialog.show()">
<f:attribute name="rawParentId" value="#{node.getIdTestGroup()}" />
</p:commandButton>
最佳答案
您可以将parentId添加到现有的update=
属性,如下所示:
update="tree parentId"
这将呈现
parentId
并将其值设置为testGroupController.selected.parentId
。编辑
您可以使用以下方法处理从UI到的任何值:
process="myInputId"
例
<h:form>
<h:inputText id="input"
value="#{bean.value}" />
<h:outputText id="output"
value="#{bean.value}" />
<p:commandButton process="input"
update="output"
value="Submit" />
单击按钮后,将在
id="input"
中设置bean.value
的值(按process="input"
的顺序)。接下来,您的id="output"
将使用bean.value
呈现(或更新)(按update="output"
的顺序)。关于jsf - 如何在Primeface中更新客户端上的组件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16347676/