Hi
all,
I am
having problem updating the tree model. Here is my short code
sample
JSP
<h:commandLink value="Refresh tree"
action=""/>
<br/><br/>
<br/><br/>
<!-- Expand/Collapse Handled By Server
-->
<t:tree2 id="serverTree" value="#{treeBacker.treeModel}" var="node" varNodeToggler="t" clientSideToggle="false" binding="#{treeBacker.tree}">
<t:tree2 id="serverTree" value="#{treeBacker.treeModel}" var="node" varNodeToggler="t" clientSideToggle="false" binding="#{treeBacker.tree}">
TreeBacker.java
... public String refreshTree()
{
treeData.refreshTree();
_treeModel = new TreeModelBase(treeData.getTreeData());
return null;
}
public TreeModel getTreeModel() {
if (_treeModel == null) {
_treeModel = new TreeModelBase(treeData.getTreeData());
_treeModel.getTreeState().toggleExpanded("0");
}
treeData.refreshTree();
_treeModel = new TreeModelBase(treeData.getTreeData());
return null;
}
public TreeModel getTreeModel() {
if (_treeModel == null) {
_treeModel = new TreeModelBase(treeData.getTreeData());
_treeModel.getTreeState().toggleExpanded("0");
}
return _treeModel;
}
}
I
setup breakpoint to see what is going on. It seems like refreshTree() get
called, _treeModel is updated. Then getTreeModel() got called twice.
The first time it returned the updated one, then the second time it
returned the old one.
My
treeBacked is defined in the session scope as follow. So there should not
be two instances of treeBacker for the same session.
<managed-bean>
<managed-bean-name>treeBacker</managed-bean-name>
<managed-bean-class>gov.nih.nci.ncicb.cadsr.umlmodelbrowser.tree.TreeBacker</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean-name>treeBacker</managed-bean-name>
<managed-bean-class>gov.nih.nci.ncicb.cadsr.umlmodelbrowser.tree.TreeBacker</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Any
suggestions on how to get this to work or other ways to refresh the tree would
be grealy appreciated.
Many
thanks,
Jane

