2013-01-19 48 views
3

我試圖用Struts if標籤與迭代器,但它不工作。 以下是此Struts如果標籤不工作

<s:iterator status="i" value="pages" > 
    <s:set var="kk" value="<s:property />" />  

    <s:if test="%{(#kk<5)}"> 
     Hello 
    </s:if><s:else> 
     Hi 
    </s:else>       
</s:iterator> 

pages列表的代碼是一個整數列表。 上面的代碼應打印Hello如果pages值小於5,但打印它的所有值爲pages

+1

請註明您是「不工作」 –

+0

此代碼應打印您好,如果列表值小於5,但它並不打印的意思 –

+0

請問您有任何嘗試自己調試它,比如在那個時候顯示'kk'的值? –

回答

2

OGNL,jstl等有很多選項,它可能成爲檢索值的噩夢。這一個嘗試,我認爲在以下情況下%{}不是強制性

<s:iterator id="page" value="pages"> 
    <s:if test="#page < 5">Hello</s:if> <!-- or <s:if test="%{#page < 5}"> --> 
    <s:else>Hi</s:else> 
</s:iterator> 
+0

是的,它工作。 –

+0

在Struts2中使用JSTL不是一個好的選擇 –

+0

@RomanC爲什麼不? –

1

應該使用

<s:set name="kk" value="0" /> 

,而不是

<s:set var="kk" value="<s:property />" /> 

,你不應該在使用<s:標籤struts標籤的屬性

<s:set name="kk" value="0"/> 
<s:iterator status="i" value="bloglist" > 
    <s:set name="kk" value="%{#kk+1}" /> 
    <s:if test="%{(#kk<2)}"> 
    Hello<br> 
    </s:if> 
    <s:else> 
    Hi<br> 
</s:else> 
</s:iterator> 
+0

名稱標籤被struts棄用,但我已經使用它不起作用 –

+0

爲什麼,它只是工作正常,可能是我現在檢查的版本 –

+0

不同的TLD taglibs這個是2.2.3,但在另一個項目中我已經使用了'var' atribute taglib 2.2版 –

0

你甚至不需要使用<s:set>

就充分利用Iterator功率:

<s:iterator var="itr" status="ctr" value="pages" >  
    <s:if test="%{itr[#ctr] < 5}"> 
     Hello 
    </s:if><s:else> 
     Hi 
    </s:else>  
</s:iterator>