替代c:if在JSF中

时间:2018-07-27 11:33:13

标签: jsf jstl oracle-adf

有人知道<c:if>的替代方法,以查看视图渲染时间,还是可能的话。对于我到目前为止搜索的内容,它尚不存在,或者可以使用rendered属性,但对我而言实际上并不起作用。

<af:listView value="#{bindings.date.collectionModel}" var="item" id="lv1">
    <af:listItem id="li2">
        <af:iterator id="i1" value="#{bindings.list.collectionModel}" var="row">
            <c:if test="#{item.bindings.attrid.inputValue eq row.attrid}">
                <ui:param name="varUI" value="true" />
                <c:set var="varC" value="true" />
            </c:if>
        </af:iterator>
        <af:outputText value="#{varUI}" id="otqaswq"/>
        <!--<af:outputText value="#{varC}" id="otqawq"/>-->
        <af:selectBooleanCheckbox text="Activated" id="sbc2" value="#{varUI}"/>
    </af:listItem>
</af:listView>

因此在上面的代码中,我知道c:它们在不同的时间运行,查看生成时间,而不是渲染时间。 我需要的是af:selectBooleanCheckbox会显示true或false,这取决于是否存在具有相同值的值。 我的问题是,有人知道替代方法吗?

2 个答案:

答案 0 :(得分:0)

渲染的图像应100%可用,您的表达可能不正确。 切换到您将使用完全相同的表达式的另一种选择,将使您处于完全相同的位置。

答案 1 :(得分:0)

您不能使用<af:iterator>来使用<ui:param><c:set>有条件地设置值,因为它们都是标记处理程序,它们在之前 {{1 }}。您可以改用<af:iterator>,但这需要一些集合来进行迭代。像<c:forEach>这样的javax.faces.model.DataModel很可能无法工作。

但是,老实说,您应该实现一些Java方法,该方法将为您提供所需的值(#{bindings.list.collectionModel}true),而不是尝试使用JSF标签实现此逻辑。