1

我想创建一个由模板支持的 facelet 组件。

像这样的东西:

<h:panelGroup rendered="#{myBean.isStepActive('step0')}">
  <composition template="wizard-step.jspx">
    <ui:define name="title">Step One</ui:define>
    <ui:define name="text"><p>This describes the step</p></ui:define>
  </composition>
</h:panelGroup>
<h:panelGroup rendered="#{myBean.isStepActive('step1')}">
  <composition template="wizard-step">
    <ui:define name="title">Step Two</ui:define>
(...)

似乎不起作用,因为无论呈现返回什么,wizard-step.jspx 的内容都会放在任何页面上(似乎 ui: 标签在所有其他标签之前进行评估。

有没有办法完成我想要的?在我的情况下,普通的自定义标签不够强大,因为它只支持 xml 属性但不支持子元素。

4

1 回答 1

1

好的,我找到了解决方案,这很容易。

只需使用普通的 taglib 并像这样使用 <ui:insert> 和 <ui:define> :

<my:wizardStep>
<ui:insert name="title"><h2>The header comes here</h2>/ui:insert>
</<my:wizardStep>

在标签定义中:

<ui:composition>
<ui:insert name="title" />
(...)
于 2012-08-09T07:59:58.910 回答