3

ダイアログフォーム機能で子追加ボタンを作成したい。

ページには、ツリーとモーダル ダイアログ フォームがあります。ツリーのすべてのノードには、子の作成ボタンがあります。[子の作成] ボタンをクリックすると、モーダル フォームが表示されます。ここで、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}" />

アップデート

新しいアイテムのparentIdを設定するには、アクションリスナーtestGroupController.nodeListenerを使用する必要があります。

    <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>
4

1 に答える 1