【发布时间】:2015-01-11 11:41:11
【问题描述】:
我想检查 GSP 页面。我有一个产品清单。该列表包含大约 21 种产品。我使用 g:each 循环 GSP 中的产品并使用 if/else 进行检查。请参阅下面的代码。但如果 product.id 不等于 3。页面显示/打印复选框“dontCallMe”21 次,我希望打印一次。这是为什么?还有其他方法可以进行检查吗?谢谢
<g:each in="${products}" var = "product">
<g:if test="${product.id == '3'}">
<tr>
<td>
<g:checkBox name="callMe" checked="true"
value=""/> Call me
</td>
</tr>
</g:if>
<g:else>
<tr>
<td>
<g:checkBox name="callMe" checked="false"
value=""/> Call me
</td>
</tr>
</g:else>
<g:if test="${product.id == '4'}">
<tr>
<td>
<g:checkBox name="callMeAgain" checked="true"
value=""/> Call me again
</td>
</tr>
</g:if>
<g:else>
<tr>
<td>
<g:checkBox name="callMeAgain" checked="false"
value=""/> Call me again
</td>
</tr>
</g:else>
<g:if test="${product.id == '5'}">
<tr>
<td>
<g:checkBox name="dontCallMeAgain" checked="true"
value=""/> Dont call me again
</td>
</tr>
</g:if>
<g:else>
<tr>
<td>
<g:checkBox name="dontCallMeAgain" checked="false"
value=""/> Dont call me again
</td>
</tr>
</g:else>
</g:each>
【问题讨论】:
-
您确定
product.id是String值吗?如果是数字,则使用product.id == 3 -
@Igor 是的,我确定,它是一个字符串
-
好的,所以您确定您有 20 个带有
id == '3'的项目和 1 个带有id != '3'的项目。预计会有 20 行Call me和 1 行Dont call me,对吧? -
@Igor 我拥有的是具有不同产品 ID 的产品列表,因此我必须在不同时间进行检查。因此,如果 product.id 等于 1 则打印一些东西,如果 product.id 等于 2 则...否则...等...
-
您可以使用 hashmap(或其他类型的映射)来使用产品 id 作为键和请求的字符串作为值。