2011-04-02 99 views
0

評估使用JSTL如果JSTL標籤集/如果

爲什麼我的價值isOnline不被評估爲使用真實JSTL如果

<c:set var="isOnline" value="${friend.online}"/> 
<h:outputText value="#{isOnline}" /> 
<br/> 
(isOnline) is: ${isOnline} 
<c:if test="${isOnline == 'true'}" var="theTruth"> 
    <h:outputText value="hello"/> 
</c:if> 
<br/> 
(isOnline == 'true') is: ${theTruth} 

結果:

true 
(isOnline) is: true 
(isOnline == 'true') is: false 

我不是真的確定爲什麼條件被評估爲false,即使我打印isOnline的值顯示它是真實的。

任何幫助,將不勝感激..提前

回答

3

如果它是一個布爾謝謝你,那麼你不應該把它比作字符串。只要做

<c:if test="${isOnline}"> 

此外,我看到你使用的是JSF。當JSF提供相同的功能時,您應該儘可能避免使用JSTL標籤。這是因爲它們不像編碼期望的那樣同步運行,並且在某些情況下可能導致無法預料的行爲。只需使用JSF rendered屬性即可。

<h:outputText value="Hello" rendered="#{friend.online}" /> 

對於使用rendered屬性的更多示例,請this answer

+0

感謝您的回答,我可能會根據您的建議使用渲染。因爲如果使用JSTL,我會得到奇怪的行爲。即使friend.online是布爾值,但仍使用 評估爲false,我不確定爲什麼。 – Unis 2011-04-02 16:21:10

+0

然後你在'h:dataTable'中使用這個。改爲使用'rendered'屬性。另請參閱鏈接的答案。 – BalusC 2011-04-02 20:42:17