One solution:
1. Make an array of session objects with tree elements and elements:
@Component @Scope("session") public class SessionObject { private Object[] root; public Object[] getRoot() { return root; } public void setRoot(Object[] root) { this.root = root; } }
2.Inject in TestBean:
@Autowired private SessionObject sessionObject;
3. In the init () method, we must save everything in the session:
Object[] array = new Object[] { root, element, element2 }; sessionObject.setRoot(array);
4. Finally, in the saveAction () file, we can restore elements with new values:
for (TreeNode children : ((DefaultTreeNode) ((Object[]) sessionObject .getRoot())[0]).getChildren()) { ....
Each session item is required:
Backbean:
@Component @Scope("request") public class TestBean extends PrivateBaseBean implements Serializable { @Autowired private SessionObject sessionObject; protected static final Logger logger = Utils.loggerForThisClass(); private TreeNode child1; private Element element; private Element element2; @PostConstruct public void init() { sessionObject = new SessionObject(); element = new Element("Total"); element2 = new Element("Oficina"); TreeNode root = new DefaultTreeNode("root", null); child1 = new DefaultTreeNode(element, root); new DefaultTreeNode(element2, root); Object[] array = new Object[] { root, element, element2 }; sessionObject.setRoot(array); } public void saveAction() { for (TreeNode children : ((DefaultTreeNode) ((Object[]) sessionObject .getRoot())[0]).getChildren()) { logger.debug(((Element) children.getData()).getName() + "->" + ((Element) children.getData()).getValue()); for (TreeNode leaf : children.getChildren()) { logger.debug(((Element) leaf.getData()).getName() + "->" + ((Element) leaf.getData()).getValue()); } } } public TreeNode getRoot() { return ((DefaultTreeNode) ((Object[]) sessionObject.getRoot())[0]); } public void setRoot(TreeNode root) { Object[] array = new Object[] { root, element, element2 }; sessionObject.setRoot(array); } }
Now the conclusion:
DEBUG: com.smf.web.jsf.bean.TestBean - Total->TotalValue DEBUG: com.smf.web.jsf.bean.TestBean - Oficina->OfficeValue
Read more here ..
source share