我从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>();
在我的JSP中,我想根据qty [] value或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)
提前感谢您的帮助和广告。
迈克尔
答案 0 :(得分: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。