myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jochen List (JIRA)" <...@myfaces.apache.org>
Subject [jira] Created: (TOMAHAWK-1556) tree2: Programatically setting of Treestate does only work on the first time
Date Wed, 10 Nov 2010 08:48:15 GMT
tree2: Programatically setting of Treestate does only work on the first time
----------------------------------------------------------------------------

                 Key: TOMAHAWK-1556
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1556
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Tree2
    Affects Versions: 1.1.9
         Environment: MyFaces 1.1.1, Java SUN JDK 1.5. update 12, Bea Weblogic 9.2 MP3, Windows
XP SP3
            Reporter: Jochen List


I have a problem with resetting the state and Model of tree2 component.

On the Jsp a tree2 Component is placed. If the user clicks on a node, the node is marked as
selected and highlighted with css. This works fine. Also on the page, there is a commandLink
"Reset", which should resets the tree. Resetting means, that the root node will be selected
and of course, highlighted with css.

If the users clicks on a treenode, the node is correctly marked as selected and highlighted.
But if the users clicks on the reset Link, the root node will not be seleceted. The view shows
the old node as selected. No reset is possible.

In my reset method in the ManagedBean, which is connected to the Reset commandLink, I'm creating
a new treemodel, setting the path to the selected node, and setting the model to the tree.
I have tried both options, recreating model and tree and only updating the model. Nothing
worked as expected. In both cases, the old node is shown as selected.

I have debugged throw the code and in theBackingBean, everythink is correctly set. I can see
the variables of htmlTree and treeModel and everythink looks like expected. Then I have debugged
the isNodeSelected() Method of the tree, and I can see, that the getDataModel() Method of
UITreeData returns a "_cachedModel" variable which contains the old model, with the old selected
node. And this model seam to be used for rendering the jsp

The JSP Code:
<t:tree2 value="#{bean.model}" showRootNode="false" var="node"
     varNodeToggler="t" binding="#{bean.htmlTree}" clientSideToggle="false">
     <f:facet name="orga">
         <h:panelGroup>
             <t:commandLink immediate="false" styleClass="#{t.nodeSelected ? 'selectedNode':'standardNode'}"
actionListener="#{t.setNodeSelected}"
 action="#{bavCockpitBean.updateNodeList}">
                <t:graphicImage value="images/person.png" border="0" alt="TreeIcon"/>
                <h:outputText value="#{node.description}" />
             </t:commandLink>
        </h:panelGroup>
     </f:facet>
</t:tree2>


The ManagedBean Code:
private HtmlTree htmlTree = null;
private TreeModelBase treeModel = null;
private boolean forceTreeUpdate = true;

public String reset() {
    this.forceUpdate = true;
    return "success";
}

public TreeModel getHirarchieModel() {
    if ( forceUpdate ) {
        this.forceUpdate = false;
        TreeNode root = ... // Generating the tree;

        this.treeModel = new TreeModelBase(root);
        this.treeModel.getTreeState().setSelected( "0:0" );

        this.htmlTree = new HtmlTree();
        tree.setModel(this.treeModel);

        return this.treeModel;

}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message