Rich:tree is not populating...
sd.ali786 Jan 28, 2012 5:47 AMHi to all,
Am new to this community. and am a newbie to jsf and to richfaces .
but I need to populate rich:tree component...
Jsf page:
-----------
- <h:form>
- <h:panelGrid columns="2" width="100%" columnClasses="col1,col2">
- <rich:tree style="width:300px" nodeSelectListener="#{simpleTreeBean.processSelection}"
- reRender="selectedNode" ajaxSubmitSelection="true" switchType="client"
- value="#{simpleTreeBean.treeNode}" var="item">
- </rich:tree>
- <h:outputText escape="false" value="Selected Node: #{simpleTreeBean.nodeTitle}" id="selectedNode" />
- </h:panelGrid>
Java Bean:
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import javax.faces.FacesException;
- import javax.faces.component.UIComponent;
- import javax.faces.context.ExternalContext;
- import javax.faces.context.FacesContext;
- import org.richfaces.component.UITree;
- import org.richfaces.component.html.HtmlTree;
- import org.richfaces.event.NodeSelectedEvent;
- import org.richfaces.model.TreeNode;
- import org.richfaces.model.TreeNodeImpl;
- public class SimpleTreeBean {
- private TreeNode rootNode = null;
- private List<String> selectedNodeChildren = new ArrayList<String>();
- private String nodeTitle;
- private static final String DATA_PATH = "/simple-tree.properties";
- private void addNodes(String path, TreeNode node, Properties properties) {
- boolean end = false;
- int counter = 1;
- while (!end) {
- String key = path != null ? path + '.' + counter : String.valueOf(counter);
- String value = properties.getProperty(key);
- if (value != null) {
- TreeNodeImpl nodeImpl = new TreeNodeImpl();
- nodeImpl.setData(value);
- node.addChild(new Integer(counter), nodeImpl);
- addNodes(key, nodeImpl, properties);
- counter++;
- } else {
- end = true;
- }
- }
- }
- private void loadTree() {
- FacesContext facesContext = FacesContext.getCurrentInstance();
- ExternalContext externalContext = facesContext.getExternalContext();
- InputStream dataStream = externalContext.getResourceAsStream(DATA_PATH);
- try {
- Properties properties = new Properties();
- properties.load(dataStream);
- rootNode = new TreeNodeImpl();
- addNodes(null, rootNode, properties);
- } catch (IOException e) {
- throw new FacesException(e.getMessage(), e);
- } finally {
- if (dataStream != null) {
- try {
- dataStream.close();
- } catch (IOException e) {
- externalContext.log(e.getMessage(), e);
- }
- }
- }
- }
- public void processSelection(NodeSelectedEvent event) {
- HtmlTree tree = (HtmlTree) event.getComponent();
- nodeTitle = (String) tree.getRowData();
- selectedNodeChildren.clear();
- TreeNode currentNode = tree.getModelTreeNode(tree.getRowKey());
- if (currentNode.isLeaf()){
- selectedNodeChildren.add((String)currentNode.getData());
- }else
- {
- Iterator<Map.Entry<Object, TreeNode>> it = currentNode.getChildren();
- while (it!=null &&it.hasNext()) {
- Map.Entry<Object, TreeNode> entry = it.next();
- selectedNodeChildren.add(entry.getValue().getData().toString());
- }
- }
- }
- public TreeNode getTreeNode() {
- if (rootNode == null) {
- loadTree();
- }
- return rootNode;
- }
- public String getNodeTitle() {
- return nodeTitle;
- }
- public void setNodeTitle(String nodeTitle) {
- this.nodeTitle = nodeTitle;
- }
- }
But am not getting tree component.
What to do?
It's Just printing the output : Selected Node: but not populating tree component.
I have one more doubt..wher to keep this properties file..
richfaces Jar version that i used:
richfaces-api-3.2.2.SR1.jar
richfaces-impl-3.2.2.SR1.jar
richfaces-ui-3.2.2.SR1.jar
Thanks in advance..and pretty urgent...