将新组件放入现有组合中

Put new component inside existent composition

我是 Java 网络新手,正在学习英语... 我有多个复合组件,效果很好,例如,这段代码

<composite:interface>
   <composite:attribute name="usernameValue" />
</composite:interface>
<composite:implementation>

<h:form>
   <h:outputText id="username" value="#{cc.attrs.usernameValue}" />
</h:form>

当我需要使用这个组件时,我只是这样做:

<myComposite:myComponent usernameValue="My user name value"/>

这没问题。

但是,如果我需要将更多组件放入这个先前创建的组件中,该怎么办,例如:

<h:form>
    <h:outputText id="username" value="My text 1" />
    <p:commandButton value="New button 2"/>
    <p:commandButton value="New button 3"/>
    <p:commandButton value="New button 4"/>
<h:form/>

有什么方法可以做类似的事情:

<myComposite:myComponent usernameValue="This will render default inside composite output text">
    <p:commandButton value="New button 1 to render inside my composite"/>
    <p:commandButton value="New button 2 to render inside my composite"/>
    <p:commandButton value="New button 3 to render inside my composite"/>
<myComposite:myComponent/>

我正在学习,这次我根据我将使用的组件重新创建我需要使用属性 render="true or false" 的所有合成,但这就像 XGH。

对不起我的英语,我知道我需要提高它...

提前致谢...

如果我没有正确理解你的问题,那么你想要实现的就是标签 insertChildren 的作用。

在你的例子中,它就像:

<composite:implementation>
   <h:form>
      <h:outputText id="username" value="#{cc.attrs.usernameValue}" />
      <composite:insertChildren />
   </h:form>
</composite:implementation>

然后按照您的预期使用组件:

<myComposite:myComponent usernameValue="This will render default inside composite output text">
    <p:commandButton value="New button 1 to render inside my composite"/>
    <p:commandButton value="New button 2 to render inside my composite"/>
    <p:commandButton value="New button 3 to render inside my composite"/>
<myComposite:myComponent/>

命令按钮将放置在定义 insertChildren 标签的位置。

Here 是其用法的另一个例子。