如何将子组件添加到JSF自定义组件以获取有效的客户端ID?

时间:2017-04-12 14:06:59

标签: jsf jsf-2.2 custom-component mojarra

我创建了一个自定义组件和自定义渲染器,它应该使用其他子组件,如下所示:

doEncodeBegin(...){
  final HtmlOutcomeTargetLink commandLink = (HtmlOutcomeTargetLink) context.getApplication().createComponent(HtmlOutcomeTargetLink.COMPONENT_TYPE);
  cmdLink.setId("myLink");
  cmdLink.setParent(component);
  cmdLink.encodeAll(context);
}

如果自定义组件具有ID" myComp"子组件应该获取客户端ID" myComp:myLink"。

但是,有时(例如在验证阶段),我收到以下错误消息:"无法添加相同的组件两次"。

==>这里的实际问题是什么?

尝试过的解决方案 - 按照BalusC的建议in this post

  1. 对组件使用setTransient(true)没有帮助。
  2. 使用setInView(false)有帮助,但我认为这也不是一个有效的解决方案?!

0 个答案:

没有答案