【发布时间】:2011-05-08 11:28:17
【问题描述】:
我有这段代码:
<c:if test="#{utils.getCounterOfCharOccurence(hideTypes, ';') != 0}">
<ui:repeat value="#{document.instanceList}" var="instance">
<c:set var="columnRendered" value="true"></c:set>
<c:forEach items="${hideTypes.split(';')}"
var="hideType">
<h:outputText value="#{hideType eq instance.documentInstanceType.mimeType}"/>
<c:if test="#{hideType eq instance.documentInstanceType.mimeType}">
<c:set var="columnRendered" value="false"></c:set>
<h:outputText value="#{columnRendered}|"/>
</c:if>
</c:forEach>
<a:outputPanel rendered="#{columnRendered == 'true'}">
<up:mimeTypeIcon type="#{instance.documentInstanceType.mimeType}"
icon="#{instance.documentInstanceType.iconPath}"
key="#{instance.instanceKey}" referenced="false"/>
</a:outputPanel>
</ui:repeat>
</c:if>
如您所见,我仅在 columnRendered 为 true 时才渲染该 outputPanel。
嗯,在某些情况下(仅用于测试以批准它应该做什么):
<h:outputText value="#{hideType eq instance.documentInstanceType.mimeType}"/>
为真,因此应输入 c:if 并将 columnRendered 切换为假。但事实并非如此,因此 columnRendered 永远为真......
你知道为什么吗?
【问题讨论】: