基于模板的facelet标记库

时间:2012-08-09 07:16:23

标签: jsf facelets icefaces

我想创建一个由模板支持的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属性但不支持子元素。

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案并且非常简单。

只需使用普通的taglib并使用&lt;用户界面:插入&gt;和&lt;用户界面:定义&GT;那样:

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

在标签定义中:

<ui:composition>
<ui:insert name="title" />
(...)