【问题标题】:Render attribute will create a component again or update the model only?渲染属性会再次创建组件还是仅更新模型?
【发布时间】:2015-07-22 13:13:50
【问题描述】:

我正在尝试下面的代码

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,但我仍然看到树处于相同状态(与先前状态没有变化)并且没有再次创建。如果渲染不再创建组件并更新模型值,那么即使树状态也应该改变?它也没有发生。

为什么?

【问题讨论】:

  • a4j 命名空间究竟代表了什么?
  • 富脸组件
  • 我没有看到 a4j:commandLink (docs.jboss.org/richfaces/latest_3_3_X/en/tlddoc/a4j/…) 的任何 render 属性
  • 这是第 n 次有人从您的问题标题中删除标签(我们已经有一个完整的单独标签部分,它非常有用)。您能否以此为暗示,在您以后的问题中不再这样做?谢谢。
  • 在旧的 Jboss4 中是 reRender,它的电话是 render

标签: jsf jsf-2 richfaces


【解决方案1】:

Render 会生成 HTML 片段并将它们发送到客户端,因为您已经移除了树,它不会发送回任何内容。如果您希望它工作,您必须将树包装在另一个组件中并重新渲染该组件。

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

【讨论】:

  • 谢谢,但在我的情况下,树显示在相同的条件下,这意味着如果我在单击按钮后再次展开某些分支渲染,现在展开节点 +/- 符号消失了,也没有孩子看到更多信息@ 987654321@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 2022-08-18
  • 2021-08-04
  • 2020-12-25
  • 1970-01-01
  • 2020-07-18
相关资源
最近更新 更多