我在处理动态生成的树(即从数据库读取叶子的树)时遇到一些麻烦。
在我的应用程序中,我显示了问题列表(在丰富的数据表中)。当用户单击某个问题时,会显示一个包含与该问题相关的照片名称的树。即使与所选问题相关的照片是从数据库中正确读取的,树的叶子仅包含我在开始时设置的默认测试值。
相关片段:
树包含在一个表单中,如下所示:
<rich:tree style="width:300px"
nodeSelectListener="#{treeBean.processSelection}"
reRender="selectedNode"
ajaxSubmitSelection="true"
switchType="server"
value="#{treeBean.treeNode}">
</rich:tree>
在bean中我有获取treeNode的方法:public TreeNode getTreeNode()
我已经调试了这个,但我不明白它是如何工作的。在 getTreeNode() 返回和在 rich:tree 中显示之间,treeNode 的值是否发生了其他变化? 我在 getTreeNode() 返回之前打印了 treeNode 的值,它是正确的,但显示的值不是打印出来的值。
任何人都可以解释为什么会发生这种情况和/或它内部是如何工作的?谢谢!
编辑:经过更详细的调试后,我认为 getTreeNode() 方法仅在渲染将显示树的页面期间调用一次。如何在每次显示树时强制 rich:tree 组件调用此方法?
最佳答案
通过重新渲染树来解决。可能有一个更优雅的解决方案,但这目前有效。
关于java - 丰富 :tree -- unable to generate leaves dynamically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120227/