我有這樣一段代碼:混合JSTL標籤JSF標籤給出了奇怪的結果
<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>
正如你看到的,我渲染outputPanel只有當columnRendered是真實的。
嗯,有這種情況的情形(僅用於測試批准它應該做的):
<h:outputText value="#{hideType eq instance.documentInstanceType.mimeType}"/>
是真實的,所以應該在C輸入:if和switch columnRendered爲false。但它沒有,所以columnRendered是真的永遠...
你知道爲什麼嗎?
嗨。感謝您的評論...問題是,我想渲染outputPanel當且僅當document.instanceList的MIME類型中沒有隱藏類型...因此檢查每個文檔實例MIME類型集以查看是否在hideTypes組。如果沒有,渲染它....我想我會只是在java iso jsf :) :) – 2010-11-11 13:44:44
我更新了一個有教養的猜測答案。 – BalusC 2010-11-11 13:48:43
gr8..but hideTypes是String []。 jsf中是否有任何方法:Arrays.asList(...)。contains(...)? – 2010-11-11 13:53:08