属性将再次创建组件或仅更新模型



我正在尝试下面的代码

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,但我仍然看到树处于相同的状态(从以前的状态没有变化),而不是再次创建。如果渲染不创建组件和更新模型值,那么甚至树的状态应该改变?这也没有发生。

为什么?

Render生成HTML片段并将它们发送给客户端,因为您已经删除了树,所以它不会发回任何内容。如果你想让它工作,你必须把树包装在另一个组件中,并渲染那个组件。

另一方面,清空子列表实际上没有做任何事情(也不应该这样做),组件树是为每个请求重新创建的。

相关内容

  • 没有找到相关文章

最新更新