是否有人知道视图渲染时间<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,这取决于是否存在具有相同值的值。我的问题是,有人知道另一种方法吗?
如果渲染100%有效,则您的表达式可能不正确。切换到另一种选择,在那里你将使用完全相同的表达式,这将使你处于相同的位置。
不能使用<af:iterator>
使用<ui:param>
或<c:set>
有条件地设置值,因为它们都是在<af:iterator>
之前求值的标记处理程序。您可以改用<c:forEach>
,但这需要一些集合进行迭代。像#{bindings.list.collectionModel}
这样的javax.faces.model.DataModel
很可能不起作用。
但老实说,您应该实现一些Java方法,它将为您提供所需的值(true
或false
(,而不是试图用JSF标记来实现这个逻辑。