我正在寻找一个关于如何根据给定模板动态创建 jsf 页面的好主意。
以下是要求:
用户有几个模板,他可以从中选择一个。显示所选模板,并且对于模板中的每个占位符,用户可以选择他想要在给定占位符中显示的内容。可以是表格、图表等……这个配置保存在数据库中,在用户登录时显示给用户。
现在构建模板很容易:
<div class="top-left" >
<ui:insert name="top-left"/>
</div>
<div class="top-right" >
<ui:insert name="top-right"/>
</div>
当我尝试这样做时,问题就开始了:
<ui:decorate template="#{myBean.template}.xhtml" >
<ui:repeat value="#{myBean.placeholders}" var="placeholder" >
<ui:define name="#{placeholder}"> //FaceletException: name Must be Literal
//display here the chosen component (chart, table ect...)
</ui:define>
</ui:repeat>
</ui:decorate>
任何想法都非常感谢!
编辑: 似乎我将不得不放弃带有动态名称的 ui:define '因为尽管在规范中它可以在实现中指定为值表达式
- 莫哈拉 2.x
- 我的面孔 2.x
- Facelets 1.x
它应该是一个字面量。