It's in the session scope.

-----Original Message-----
From: Dennis Byrne [mailto:[EMAIL PROTECTED]
Sent: Sunday, July 24, 2005 1:22 AM
To: MyFaces Discussion
Subject: RE: tree3 component reload


What scope is your backer in?  If it is in request, see if 
this "deja vu" effect is still there after doing the 
following:

1.) move bean into session scope.
2.) You may already be doing this, but make sure 
the "createProArgumentationNode()" method updates both 
underlying data source and the object model (in your case 
Edwin, the property called 'treeData' .
3.) in the 'getTreeData', test 'treeData' for the null case.  
If it is null, assign it to the result of loadTreeData() and 
return it, otherwise just return 'treeData' .

---- Original message ----
>Date: Sat, 23 Jul 2005 16:09:54 -0400
>From: Edwin Mercado <[EMAIL PROTECTED]>  
>Subject: RE: tree3 component reload  
>To: MyFaces Discussion <[email protected]>
>
>I don't consider this a "bright idea" but a workaround 
(i.e., hack)
>to the current shortcoming. I was able to temporarily solve 
this
>issue (of having the tree2 component not displaying the 
updated tree value
>immediately)
>by adding an action method, besides the actionListener, to
>the commandLink adding the node.
>
>               <h:commandLink value="#{labels.add_pro} "
>                       styleClass="document"
>                       immediate="true"
>                       action="#{treeBacker.updateView}"
>       
>actionListener="#{treeBacker.createProArgumentationNode}">
>                       <h:graphicImage 
value="images/ProNodeIcon.gif"
>border="0" />
>               </h:commandLink>
>
>The action method does two things: 
>       1) renders the view with the NEWLY ADDED NODE
>               (added in the actionListener) and 
>       2) forces a reload of the current page. 
>
>If you do just one of either steps, you'll continue 
experience the same 
>effect as before (display of the old tree view). I don't 
under JSF
>enough to explain the reasoning behind this. I just know 
that it 
>does what I want :)
>
>The action method (i.e., treeBacker.updateView) looks like 
this:
>
> public String updateView() {
>
>  FacesContext context = FacesContext.getCurrentInstance();
>  ViewHandler viewHandler = context.getApplication
().getViewHandler();
>  UIViewRoot viewRoot = context.getViewRoot();
>  try  {
>   viewHandler.renderView(context, viewRoot);
>  }  catch (IOException ioex)  {
>   logger.severe(ioex.getCause().toString());
>  }
>
>  return "UpdateViewAction";
> }
>
>Edwin
>p.s. waiting for a better solution (maybe inside of the 
tree2 code)
>-----Original Message-----
>From: Dennis Byrne [mailto:[EMAIL PROTECTED]
>Sent: Saturday, July 23, 2005 1:19 AM
>To: MyFaces Discussion
>Subject: RE: tree3 component reload
>
>
>I'm getting the same behavior as both of you.  I get it with 
>@action and @actionListener .  I get it with the HEAD branch 
>and 1.0.9 .  I get it when I add nodes and remove nodes.
>
>I'll take a look this weekend.  If there aren't any bright 
>ideas between now and next week, I'll open a bug so that we 
>can discuss this at the "tree2 summit" .
>
>---- Original message ----
>>Date: Fri, 22 Jul 2005 17:44:40 -0400
>>From: "Vo, Ky" <[EMAIL PROTECTED]>  
>>Subject: RE: tree3 component reload  
>>To: "'MyFaces Discussion'" <[email protected]>
>>
>>Hi,
>>
>>I had the exact problem using tree2.  I started to play 
>around with the
>>setValue method from HtmlTree.  It seems to do the trick.  
>The only problem
>>is the initial click to process the actionListener.  (I'm 
>still trying to
>>solve this problem (bug?))  After going to load my initial 
>tree, I click on
>>a node to process the actionListener.  It seems to be 
>reloading the initial
>>tree again after I click on the node and it doesn't expand 
>the node.  After
>>that initial click on the tree, the actionListener works 
>like its supposed
>>to and adds children to the tree with every click.  
>Maybe "<x:tree2
>>value="#{treeBacker.treeData" ... >" is not being set 
>correctly on the
>>initial load of the page.  Do I somehow need to do a 
>setValue in my
>>treeData() method like in the processAction method for the 
>actionListener?
>>
>>-Ky
>>
>>Here's the code I used:
>>
>>In JSP
>>-----
>>              <x:tree2 value="#{treeBacker.treeData}" 
>id="server-tree"
>>                      var="node" varNodeToggler="t"
>>clientSideToggle="false" showRootNode="false">
>>                      <f:facet name="tree-type">
>>                              <h:panelGroup>
>>                                      <h:commandLink 
>immediate="true"
>>action="#{t.toggleExpanded}">
>>                                      
>       <f:actionListener
>>type="com.x.TreeBackerListener"/>
>>                                      
>       <h:graphicImage
>>value="/images/yellow-folder-open.png"
>>      
>>rendered="#{t.nodeExpanded}" border="0" />
>>                                      
>       <h:graphicImage
>>value="/images/yellow-folder-closed.png"
>>      
>>rendered="#{!t.nodeExpanded}" border="0" />
>>                                      </h:commandLink>
>>                                      <h:outputText
>>value="#{node.description}" styleClass="nodeFolder" />
>>                              </h:panelGroup>
>>                      </f:facet>
>>              </x:tree2>
>>
>>In class TreeBackerListener
>>----
>>public class StudyDBTreeListener implements ActionListener {
>>
>>      public TreeNode treeData() {
>>              TreeNode treeData = new TreeNodeBase("tree-
>type", "Tree
>>Description", true);
>>              
>>              TreeNode newNode = new TreeNodeBase("tree-
>type",
>>"Description", "Identifier", true);
>>              treeData.getChildren().add(addModelNode);
>>
>>              return treeData;
>>      }
>>
>>      public void processAction(ActionEvent actionEvent) {
>>
>>              UIComponent component = 
>actionEvent.getComponent();
>>              UIComponent parent = component.getParent
>().getParent();
>>
>>              HtmlTree tree = (HtmlTree) parent;
>>
>>              TreeNode treeData = tree.getNode();
>>              String treeType = treeData.getType();
>>              
>>              //Important to check to see if node has any 
>children.
>>              //Without the children check, it adds the 
>same childen to
>>the 
>>              //node over again (if this is what you want 
>then take out
>>the
>>              //child count check.
>>              if(treeType.equals("tree-type") && 
>treeData.getChildCount()
>>== 0){
>>
>>                      TreeNode newNode = new TreeNodeBase
>("tree-type",
>>"description", 
>>                                              "identifier", 
>true);
>>                      treeData.getChildren().add(newNode);
>>
>>              }
>>
>>              TreeNode treeDataRoot = (TreeNode) 
>tree.getValue();
>>              tree.setValue(treeDataRoot);
>>              
>>      }
>>}
>>
>>-----Original Message-----
>>From: Edwin Mercado [mailto:[EMAIL PROTECTED] 
>>Sent: Friday, July 22, 2005 1:43 PM
>>To: MyFaces Discussion
>>Subject: RE: tree3 component reload
>>
>>
>>Here's the action listener for the add child node
>>command link:
>>
>> public void createProArgumentationNode(ActionEvent event)
>> {
>>  ArgumentationNode child = createNode();
>>  ArgumentationNode parent = getCurrentNode();
>>  addEdge(child, parent, true);
>>
>>  /* view updated model data */ 
>>  focusNode(event, child);
>>  toggleSelectedNode();
>>
>> }
>>loadTreeData() gets called twice by the getTreeData()
>>BEFORE the addition of the new node and once AFTER.
>>Apparently, the tree model is updated with the previous 
>(old) data.
>>
>>Edwin
>>-----Original Message-----
>>From: Dennis Byrne [mailto:[EMAIL PROTECTED]
>>Sent: Friday, July 22, 2005 4:34 PM
>>To: MyFaces Discussion
>>Subject: Re: tree3 component reload
>>
>>
>>Can you post the code for your action listener?  I'm 
curious 
>>to see if loadTreeData() is being called after or before 
you 
>>updating the tree model.
>>
>>---- Original message ----
>>>Date: Fri, 22 Jul 2005 15:40:22 -0400
>>>From: Edwin Mercado <[EMAIL PROTECTED]>
>>>Subject: tree3 component reload  
>>>To: [email protected]
>>>
>>>Hello all,
>>>I'm still baffled by the JSF phases. I'm using a tree3
>>component
>>>that is a tied to a getTreeData() function to retrieve the
>>current data
>>>from the model. Everytime I select a node, the getTreeData
()
>>function is
>>>called 3 times, retrieving the same data every time.
>>>
>>><a:tree3 expandAllInit="true" id="networkTree"
>>>                             value="#
>>{treeBacker.treeData}" var="node"
>>>varNodeToggler="t"
>>>                             clientSideToggle="true">
>>>...
>>></a:tree3>
>>>
>>> public TreeNode getTreeData()  {
>>>  treeData = loadTreeData();
>>>  return treeData;
>>> }
>>>
>>>
>>>Now, for each tree3 node that has been selected I display
>>>a command link to add a child node.
>>>
>>>             <h:commandLink value="#{labels.add_pro} "
>>>                     styleClass="document"
>>>                     action="UpdateViewAction"
>>>     
>>>actionListener="#{treeBacker.createProArgumentationNode}">
>>>                     <h:graphicImage
>>value="images/ProNodeIcon.gif"
>>>border="0" />
>>>             </h:commandLink>
>>>
>>>Whenever I click add child node command
>>>link, the getTreeData() is called 3 times, but with a 
>>little "twist". This
>>>is
>>>how it goes:
>>>
>>>1st time:    getTreeData() gets called and returns the 
>>already displayed
>>>data
>>>2nd time:    similar steps as in the 1st time.
>>>====> the actionListener for the add child node command 
link
>>gets called.
>>>     The model is updated with the appropriate value.
>>>3rd time:    getTreeData() gets called but this time it 
>>gets the updated
>>>     model value.
>>>
>>>Unfortunately, after the 3rd time that getTreeData() got
>>called with the
>>>updated
>>>model value, the tree3 component displays only the 
previous 
>>stored value.
>>>Now, if I selected a node THEN the updated value (the added
>>node) gets
>>>displayed.
>>>
>>>My question is how can I make the tree3 component display
>>the most recent
>>>model data?
>>>
>>>Thanks
>>>Edwin
>>>p.s. I experience the same effect using the tree2 component
>>instead of the
>>>tree3.
>>>
>>>
>>Dennis Byrne
>>
>>
>>************************************************************
*
>********
>>This message and any attachments are solely for the 
intended 
>recipient. If you are not the intended recipient, 
disclosure, 
>copying, use or distribution of the information included in 
>this message is prohibited -- Please immediately and 
>permanently delete.
>>
>Dennis Byrne
Dennis Byrne

Reply via email to