Jsf 2 在复合构件上使用输入内部镶嵌面

Jsf 2 在复合构件上使用输入内部镶嵌面,jsf-2,Jsf 2,我在应用程序中使用一个复合组件,该组件在选项卡视图中声明并呈现一个方面部分: <composite:facet name="ambienteEspecifico" required="true"/> ... <p:tabView value="#{cc.attrs.gerenciador.entries}" var="servidor"> <p:tab title="#{servidor.key}"> <composite:renderFa

我在应用程序中使用一个复合组件,该组件在选项卡视图中声明并呈现一个方面部分:

<composite:facet name="ambienteEspecifico" required="true"/>
...
<p:tabView value="#{cc.attrs.gerenciador.entries}" var="servidor">
   <p:tab title="#{servidor.key}">
    <composite:renderFacet name="ambienteEspecifico"/>
   </p:tab>
</p:tabView>...

...
...
问题是当我使用组件时,如果我放置任何输入标记,如:

<f:facet name="ambienteEspecifico">
   <h:inputText value="#{servidor.value.espaco}"/>
</f:facet>

服务器返回一个“无法访问的目标,标识符'servidor'解析为null:javax.el.PropertyNotFoundException”。如果我更改为输出标记:

<f:facet name="ambienteEspecifico">
   <p:outputLabel value="#{servidor.value.espaco}" />
</f:facet>

正确显示该值,不会引发任何异常。因此,问题似乎只与输入组件有关。如果我将输入标记放在组件端:

<p:tabView value="#{cc.attrs.gerenciador.entries}" var="servidor">
   <p:tab title="#{servidor.key}">
    <composite:renderFacet name="ambienteEspecifico"/>
    <h:inputText value="#{servidor.value.espaco}"/>
   </p:tab>
</p:tabView>

它也可以正常工作,不会引发任何异常。我是在对付一只虫子吗? 顺便说一下,我使用的是
jsf2.2.2.


谢谢

根据Ali C的建议,使用
解决了问题

<p:tabView value="#{cc.attrs.gerenciador.entries}" var="servidor">
  <p:tab title="#{servidor.key}">
    <composite:insertChildren/>
  </p:tab>
</p:tabView>


至少对我来说,这是一个解决办法。唯一的问题是,有时必须在合成的不同位置渲染多个子对象。

与输出不同,输入需要一个非空对象来操作。不知何故,servidor在到达AmienteSpecifico时为null。奇怪的是,即使抛出异常,输入也会显示默认值server.value.espaco。我尝试在构造函数中将其设置为5,并且值5显示在输入中。我不认为服务器为空,因为输出显示了server.value.espaco的实际值。奇怪的是,即使在输入中显示值5,但应用程序抛出PropertyNotFound异常。不确定为什么会发生这种情况。您是否可以使用它来代替?我知道其中一个是有效的,因为它不在乎你放了什么,它只会按原样插入到组合中,然后再创建到组件树中。我已经用insertChildren测试了代码,它成功了,但是我不能使用insertChildren,因为我有多个标签,必须插入到复合组件的不同位置。最后,我别无选择,只能更改代码以支持insertChildren。