如何在Struts迭代器标记中添加条件?

时间:2014-01-11 15:53:16

标签: java jsp struts2 iterator ognl

我想在评级值小于或等于2时突出显示一行。我无法使用<s:if>来获取结果。请告诉我如何在我的JSP页面中添加条件。

<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>

4 个答案:

答案 0 :(得分:1)

假设rating是被迭代对象的属性。然后在iterator标记内部,您可以通过属性名称访问它。

<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)

有几种方法:

  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 index:

    <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">
    

答案 2 :(得分:0)

您可以像这样使用EL(表达语言)

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

或者您可以定义bean变量

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

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

答案 3 :(得分:0)

你必须使用test =&#34;%{abc.rating == 2}&#34;像这样而不是test =&#34;#abc.rating == 2&#34;

<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>