我正在尝试下面的代码
public String collapseTreeById(ActionEvent event) throws IOException {
String treeId = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("treeId");
UITree tree = (UITree)event.getComponent().findComponent(treeId);
tree.getParent().getChildren().clear();
return null;
}
在这里你可以检查我已经删除了组件的所有子节点,这个方法就像这样
<a4j:commandLink actionListener="#{inventoriesBean.collapseTreeById}"
value="collapse" render="treeServType">
<f:param value="treeServType" name="treeId" />
</a4j:commandLink>
并且还添加了render
但是我仍然看到树处于相同的状态(与之前的状态没有变化)并且没有再次创建。如果渲染不再创建组件并更新模型值,那么甚至树状态应该更改?它也没有发生。
为什么?
答案 0 :(得分:0)
渲染生成HTML片段并将其发送到客户端,因为您已删除了它不会发回任何内容的树。如果您希望它工作,您必须将树包装在另一个组件中并重新呈现该组件。
另一方面,清空子项列表并没有真正做任何事情(你不应该这样做),每次请求都会重新创建组件树。