【问题标题】:How to add a condition in Struts iterator tag?如何在 Struts 迭代器标签中添加条件?
【发布时间】:2014-01-11 15:53:15
【问题描述】:

我想在 rating 的值小于或等于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>

【问题讨论】:

    标签: java jsp struts2 iterator ognl


    【解决方案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'/>">
    

    【讨论】:

      【解决方案2】:

      有几种方法:

      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. 迭代器状态索引:

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

      【讨论】:

        【解决方案3】:

        你可以像这样使用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}">
        

        【讨论】:

        • 这是 Struts 1,问题是关于 Struts 2,除非你使用了一些非常奇怪的标签前缀。
        【解决方案4】:

        你必须像这样使用 test="%{abc.rating==2}" 而不是 test="#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>
        

        【讨论】:

        • 没有。在&lt;s:if&gt; 标签的test 属性中不需要%{}
        猜你喜欢
        • 2013-07-19
        • 2014-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        相关资源
        最近更新 更多