我是Java Web的新手,我只是在学习英语...... 我有多个复合组件,工作正常,例如,这个代码
<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。
对不起我的英语,我知道我需要改进它...
提前致谢...
答案 0 :(得分:1)
如果我正确理解了您的问题,那么您尝试实现的是标记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/>
并且commandButtons将放置在定义insertChildren
标记的位置。
Here是其使用的另一个例子。