我想在GSP页面上进行检查。我有一个产品清单。该列表包含约21种产品。我使用g:each来循环GSP中的产品和if / else进行检查。看下面的代码。但如果product.id不等于3.页面显示/打印checkBox" 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>
答案 0 :(得分:0)
如果您有21个产品且dontCallMe
出现21次,则表示您的情况始终为假。
我要做的是打开debugger
中的代码并验证对象是否具有您期望的预期值和类型。
如果您没有使用调试器,请添加新的<td>
<td>
`${product.id}`
</td>
此外,如果您没有调试器,请尝试这样的事情(我自己没有尝试过):
<td>
`${product.id?.getClass()}`
</td>
最后,代码可以简化如下(请原谅错别字):
<g:each in="${products}" var = "product">
<tr>
<td>
<g:checkBox name="${product.id == '3' ? 'CallMe' : 'DontCallMe'}"
checked="${product.id == '3' ? 'true' : 'false'}"
value=""/>${product.id == '3' ? 'CallMe' : 'DontCallMe'}"
</td>
<td>
DEBUG: ${product.id} <br/>
DEBUG: ${product.id?.getClass()} <br/>
</td>
</tr>
</g:each>