【问题标题】:Can you add a child component while within a JSF Renderer您可以在 JSF 渲染器中添加子组件吗
【发布时间】:2012-02-21 17:05:09
【问题描述】:

我想在 encodeBegin 中添加一个子组件

 public void encodeBegin(FacesContext context,
   UIComponent component)
   throws IOException {
    XspInputText xip = new XspInputText();

  ViewPickList vplComponent = (ViewPickList) component;
  ResponseWriter writer = context.getResponseWriter();
  String viewName = vplComponent.getViewName();
  if (StringUtil.isNotEmpty(viewName)) {
          xip.setId(vplComponent.getId() + "_InputText");
   xip.setValue("Value");
   vplComponent.getChildren().add(xip);
  super.encodeBegin(context, vplComponent); 


  }

这似乎不起作用,但我正在尝试在其中添加子组件并让它呈现。任何人都可以提出更好的方法吗?

【问题讨论】:

  • 为什么要在渲染阶段添加子组件?
  • 我正在尝试找到一种方法来根据父组件的值添加子组件。它不必在渲染时发生,只是不知道放在哪里。跨度>

标签: java jsf jakarta-ee


【解决方案1】:

您应该调用新添加的组件encodeBeginencodeEnd 方法来渲染它们。

试试这个:

  xip.encodeBegin(context);
  xip.encodeEnd(context);

还可以查看This link

如果有效请给我反馈!

【讨论】:

  • 谢谢,我已经找到了一种更好的方法来处理这个问题,但是看看我的代码你是对的。
  • 能否请您提供参考或解释您的方式。实际上我现在正在这样做,想知道是否有更好或更简单的方法;)我的用例有点不同,我想编辑现有组件而不是添加新组件,我不知道是否这样做在这个阶段(渲染响应)是否正确?谢谢
  • 好吧,我发现你提到的方式对于 Richfaces 和 Primefaces 来说是相当标准的,但是我使用的是一个名为 XPages 的 JSF 的 IBM 实现。 IBM 已经内置了一个名为 FacesComponent 的接口,如果实现该接口,则允许在组件内部构建子组件。接口为:com.ibm.xsp.component.FacesComponent.
猜你喜欢
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
相关资源
最近更新 更多