2015-09-16 23 views
0

我有這棵樹在我的網頁:從支持bean重裝<p:tree>似乎不工作

<h:form id="form" >  

    <h:panelGrid columns="4" id="panel"> 

     <p:tree id="tree1" 
       value="#{mybean.myObject}" 
       var="myObject" 
       selectionMode="single" 
       selection="#{mybean.selectedNode}" 
       draggable="true" 
       droppable="true" 
       dragdropScope="myObjectTest"> 

      <p:ajax event="dragdrop" 
        listener="#{mybean.onDragDrop}" 
        update=":form:msgs" /> 

      <p:treeNode id="treeNode1"> 
       <div> 
        <h:outputText value="#{myObject.label}" /> 
       </div> 
       <div>&nbsp;</div> 
       <p:commandLink update=":formDialogmyObject:myObjectPanel" oncomplete="PF('documentDialog').show()" title="View"> 
        <f:setPropertyActionListener value="#{myObject}" target="#{mybean.selectedmyObject}" /> 
       </p:commandLink>      

      </p:treeNode>     
     </p:tree>    

     <p:tree id="tree2" 
       value="#{mybean.myObjectAvailable}" 
       var="myObjectAvailable" 
       selectionMode="single" 
       selection="#{mybean.selectedNode}" 
       draggable="true" 
       droppable="true" 
       dragdropScope="myObjectTest" 
     > 

      <p:ajax event="dragdrop" 
        listener="#{mybean.onDragDropDelete}" 
        update=":form:msgs" process="" /> 

      <p:treeNode> 
       <h:outputText value="#{myObjectAvailable.label}" /> 
      </p:treeNode> 
     </p:tree>    

    </h:panelGrid>  

    <br /> 

</h:form> 

<p:dialog 
    id="dialogmyObject" 
    showEffect="clip" 
    hideEffect="clip" 
    widgetVar="documentDialog" 
    modal="true" 
    resizable="false" 
    appendTo="@(body)" 
    binding="#{mybean.dialog}" 
> 

    <h:form id="formDialogmyObject" > 

     <p:outputPanel id="myObjectPanel" > 

      <p:panelGrid columns="2" columnClasses="label,value" rendered="#{not empty mybean.selectedmyObject}"> 

       <h:outputLabel for="idmyObject" value="ID myObject" /> 
       <h:outputText id="idmyObject" value="#{mybean.selectedmyObject.idmyObject}" /> 

      </p:panelGrid> 

      <br /> 

      <p:commandButton  
       id="cmdSaveSinglemyObjectItem" 
       action="#{mybean.onSavemyObjectItem()}" 
       value="Save" 
       update=":form:tree1:treeNode1" 
      /> 

     </p:outputPanel> 

    </h:form> 

在我的豆,方法 「cmdSaveSinglemyObjectItem」 做到這一點:

//business logic for update data into database about menu item and update bean... 
RequestContext.getCurrentInstance().update("form"); 
RequestContext rc = RequestContext.getCurrentInstance(); 
rc.execute("PF('documentDialog').hide();"); 
rc.closeDialog(dialog); 

豆更新正確,但樹組件(id = tree1)未更新。查看舊值,但如果我刷新頁面I查看數據更新...

+0

更好的包括彈出窗口,並使用'更新=「樹1」'我嘗試了以前它爲我工作。 –

+0

我必須使用Primefaces ... – Diaboliko

+0

您是否嘗試過在對話框中使用相同的表單? –

回答

0

您應該更新整個樹,而不僅僅是它的一個特定的子元素。

update=":form:tree1" 

,而不是你update=":form:tree1:treeNode1"

+0

我試過這個解決方案了。 – Diaboliko