2014-01-11 92 views
1

我想在評級值小於或等於2時突出顯示一行。我無法使用<s:if>來獲得我的結果。請告訴我如何在JSP頁面中添加條件。如何在Struts迭代器標籤中添加條件?

<table> 
<s:iterator value="fb" status="abc"> 
<s:if test="#abc.rating==2"> 
<td style="background: #CCCCCC"> 
</s:if> 

<tr> 
<td><s:property value="cid"/></td> 
<td><s:property value="cname"/></td> 
<td><s:property value="rating"/></td> 
<td><s:property value="likes"/></td> 
<td><s:property value="dislikes"/></td> 
<td><s:property value="suggestion"/></td> 
</tr> 

</s:iterator> 
</table> 

回答

0

可以使用EL(表達式語言)這樣

<td style="background: ${abc.rating<=2 ? '#CCCCCC' : ''}"> 

,或者你可以定義變量豆

<logic:lessEqual value="2" name="abc" property="rating"> 
    <bean:define id="colorTd" value="#CCCCCC"/> 
</logic:lessEqual> 

<td style="background: ${colorTd}"> 
+0

這是Struts 1,問題是關於Struts 2,除非你使用了一些非常奇怪的標籤前綴。 –

1

假設rating是被迭代對象的屬性。然後在迭代器標籤內,您可以通過屬性名稱訪問它。

<s:if test="rating==2"> 
<s:set var="myStyle" value="'background: #CCCCCC'"/> 
</s:if> 
<s:else> 
<s:set var="myStyle" value="'background: #FFFFFF'"/> 
</s:else> 

然後使用HTML style屬性

<td style="<s:property value='#myStyle'/>"> 
1

有幾種方法:

  1. 屬性名稱:

    <s:iterator value="mySource"> 
        <s:if test="rating==2"> 
    
  2. var別名參考:

    <s:iterator value="mySource" var="myVar"> 
        <s:if test="#myVar.rating==2"> 
    
  3. IteratorStatus指數:

    <s:iterator value="mySource" status="myStat"> 
        <s:if test="mySource[%{#myStat.index}].rating==2"> 
    
  4. top參考:

    <s:iterator value="mySource"> 
        <s:if test="top.rating==2"> 
    
0

必須使用測試=「%{abc.rating == 2} 「像這樣而不是測試=」#abc.rating == 2「

<table> 
<s:iterator value="fb" status="abc"> 
<s:if test="%{abc.rating==2}"> 
<td style="background: #CCCCCC"> 
</s:if> 

<tr> 
<td><s:property value="cid"/></td> 
<td><s:property value="cname"/></td> 
<td><s:property value="rating"/></td> 
<td><s:property value="likes"/></td> 
<td><s:property value="dislikes"/></td> 
<td><s:property value="suggestion"/></td> 
</tr> 

</s:iterator> 
</table> 
+0

不需要。''標記的'test'屬性中不需要'%{}'。 –

相關問題