我正在使用JSF 2.0开发一个应用程序。 在应用程序中,必须有一个用户可以创建文档模板的页面。它与Google文档表单功能相当。例如,用户应该能够确定模板中他们想要inputText,textArea或selectBooleanCheckbox的位置。我设计了一个超类UiDocumentElement和子类UiTextarea,UiInputText,......。
现在我想知道如何在我的XHTML页面上显示这样的文档模板。我的支持bean将有一个带有UiDocumentElement对象的DataModel。但是如何使用ui:repeat来显示不同类型的UI标签?或者我应该尝试其他设计来实现这一目标吗?
实际上是解决这个问题:
<h1>#{backingBean.templateTitle}</h1>
<ui:repeat value="#{backingBean.uiDocumentElements}" var="uiElement">
<label>
<span>#{uiElement.label}</span>
<!-- here the application should know whether to render an inputText, an inputTextarea or a selectBooleanCheckbox with the attribute value="#{uiElement.value}" -->
</label>
</ui:repeat>
非常感谢任何帮助。
编辑:请参阅BalusC的评论,并附上相关问题的链接。
答案 0 :(得分:1)
最简单的方法是通过rendered
属性控制3个组件块:
<h:inputText value="#{uiElement.value}" rendered="#{uiElement.type == 'input'}"/>
<h:inputTextarea value="#{uiElement.value}" rendered="#{uiElement.type == 'textArea'}"/>
<h:selectBooleanCheckbox value="#{uiElement.value}" rendered="#{uiElement.type == 'checkbox'}"/>