如果使用迭代器status,则使用Struts2标记

如果使用迭代器status,则使用Struts2标记,struts2,tags,iterator,Struts2,Tags,Iterator,我从Struts2开始,我需要帮助解决IF标签上的一个问题 这是我的密码 public class InventoryRow { private String title; private int[] qty = new int[5]; private boolean[] warningFlag = new boolean[5]; } 在Action类中,我具有以下属性: private List<InventoryRow> parts = new Arra

我从Struts2开始,我需要帮助解决IF标签上的一个问题

这是我的密码

public class InventoryRow {
    private String title;
    private int[] qty = new int[5];
    private boolean[] warningFlag = new boolean[5];
}
在Action类中,我具有以下属性:

private List<InventoryRow> parts = new ArrayList<InventoryRow>();
private List parts=new ArrayList();
在我的JSP中,我希望根据qty[]值或warningFlag[]值应用不同的样式

<s:iterator value="parts" var="product">  
    <tr>
        <td><s:property value="title" /></td>
        <s:iterator value="qty" var="val" status="idStatus">  
            <td class="qty <s:if test="#val==-99"> none</s:if>
                   <s:elseif test="#warningdFlag[%{#idStatus.index}] == true"> warning</s:elseif>
                           " >
                <s:property />
            </td>     
        </s:iterator> 
   </tr> 
</s:iterator>

第一个测试(等于-99)有效。但不是第二个(使用warningFlag)

提前感谢您的帮助和广告

Mickeel

不需要
警告标志
之前的
,而且您有打字错误
警告标志
应该是
警告标志

<s:iterator value="parts">  
    <tr>
        <td><s:property value="title" /></td>
        <s:iterator value="qty" var="val" status="idStatus">  
            <td class="qty <s:if test="#val==-99"> none</s:if>
                   <s:elseif test="warningFlag[#idStatus.index]"> warning</s:elseif>" >
                <s:property />
            </td>     
        </s:iterator> 
   </tr> 
</s:iterator>

不需要在
test
属性内获取状态索引的
%{…}
符号,因为
test
将表达式作为值


另请参见此链接:。

嗨,Aleksandr,我应用了你的建议,但我得到了相同的结果。@OurtaauMickael:你也需要从elseif中删除
%{…}
。第一次就错过了。查看更新。它可以正常工作。非常感谢。我在struct文档中没有找到关于IF标记中的attribute“test”的任何信息。我什么时候放%{}?#是什么意思?。6年前我使用了JSTL标签,但我忘记了所有关于这方面的知识。如果你有一首短裙或者我的…@OurtaauMickael:更新了我的答案。别忘了接受/赞成答案。@OurtaauMickael为什么不接受这个答案作为正确答案?如果您需要更多帮助,请发表评论!!!