我希望进一步理解struts form loop vs jstl loop的限制。
例如,我有这个迭代循环:
<logic:iterate id="displayObj" name="mercurySubscriptionForm" property="displayObjects">
<logic:notEqual name="displayObj" property="dataTypeId" value="100">
<tr>
<td colspan="2"></td>
<td colspan="3" class="formConf"><bean:write name="displayObj" property="description" /></td>
</tr>
<tr valign="top">
<td width="30%" class="formOpt"><bean:write name="displayObj" property="fieldName" />:</td>
<td width="1%"> </td>
<bean:define id="maxLength" name="displayObj" property="maxLength"/>
<%
String mxStr = String.valueOf(maxLength);
%>
<logic:notEqual name="displayObj" property="maxLength" value="-1">
<td colspan="3" class="formConf"><html:text name="displayObj" property="value" maxlength="<%= mxStr %>" /></td>
</logic:notEqual>
<logic:equal name="displayObj" property="maxLength" value="-1">
<td colspan="3" class="formConf"><html:text name="displayObj" property="value" maxlength="20"/></td>
</logic:equal>
</tr>
</logic:notEqual></logic:iterate>
注意这一行:
<logic:notEqual name="displayObj" property="dataTypeId" value="100">
如果dataTypeId只能是100,那么这是有效的,并且是一个奇异的条件。但是,不显示数据类型为200或300的项目有新的限制。我试图在循环中实现它们:
<logic:equal name="displayObj" property="dataTypeId" value="200"></logic:equal>
<logic:equal name="displayObj" property="dataTypeId" value="300"></logic:equal>
然而这种嵌套逻辑似乎不起作用,因为struts仍然会吐出200和300值,因此我使用JSTL代替它并且运行良好..但是有人知道为什么嵌套条件逻辑不能使用struts表格?
答案 0 :(得分:0)
您应该嵌套两个标记以创建AND条件:
<logic:notEqual name="displayObj" property="dataTypeId" value="200">
<logic:notEqual name="displayObj" property="dataTypeId" value="300">
//Code to be displayed here
</logic:notEqual>
</logic:notEqual>