如何在ui中呈现不同的ui标签:重复

时间:2011-11-29 10:27:53

标签: jsf jsf-2

我正在使用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的评论,并附上相关问题的链接。

1 个答案:

答案 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'}"/>