1

我对 JSF 很陌生,我正在尝试制作一个显示一些属性的数据表(第一列将包含属性的名称,第二列将包含它们的值)。属性类型可能会有所不同(String、Long、URI、Calendar 等)。

我想要做的是,如果属性类型是例如。字符串、长整数、布尔值等以纯文本形式输出属性值(使用 outputText),但如果它是 URI 或引用(这是自定义类型),则将其视为链接。

这是我当前的 JSF 页面(将所有内容显示为纯文本):

        <p:dataTable var="property" 
                     value="#{myBean.properties()}" >
            <p:column headerText="Property" >
                #{property}
            </p:column>

            <p:column headerText="Value">
                <h:outputText value="#{myBean.property(property)}"/>
            </p:column>
        </p:dataTable>

谢谢!

4

1 回答 1

2

只需使用rendered属性来有条件地渲染 JSF 组件。下面的例子假设你已经改造property成一个完全有价值的 javabeanProperty和属性 where是一个包含, , ,name等的枚举。typetypeTEXTLINKDATEBOOLEAN

<p:column headerText="Value">
    <h:outputText value="#{myBean.property(property.name)}" rendered="#{property.type == 'TEXT'}" />
    <h:outputLink value="#{myBean.property(property.name)}" rendered="#{property.type == 'LINK'}">#{myBean.property(property.name)}</h:outputLink>
    <p:calendar value="#{myBean.property(property.name)}" rendered="#{property.type == 'DATE'}" />
    <p:selectBooleanCheckbox value="#{myBean.property(property.name)}" rendered="#{property.type == 'BOOLEAN'}" />
</p:column>

也可以看看:

于 2013-07-19T14:30:25.927 回答