2013-02-20 81 views
0

我从Struts2开始,我需要帮助来解决我的IF标签上的问题。Struts2标签如果使用IteratorStatus

这是我的代码

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

在我的JSP中,我想与数量[]值或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)

在此先感谢您的帮助和您的广告。

迈克尔

回答

1

#warningFlag之前没有必要,你有错字warningdFlag应该warningFlag

<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取表达式作为值。

另请参阅此链接:http://struts.apache.org/development/2.x/docs/ognl.html

+0

嗨Aleksandr,我申请了你的建议,但我有同样的结果。 – 2013-02-22 04:54:23

+0

@OurtaauMickael:您还需要从elseif中移除'%{...}'。第一次错过了。查看更新。 – 2013-02-22 08:47:04

+0

它的工作原理。谢谢。我没有在支柱文件中找到有关IF标签中属性“测试”的任何信息。我什么时候可以放入%{}?什么意思#? 6年前我使用了JSTL TAG,但我忘记了我对此的所有知识。如果你有一个tuto或链接为我... – 2013-02-25 04:29:37