我想在GSP页面中进行检查。我有一个产品 list 。该列表包含约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>
最佳答案
如果您有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>
关于java - 如何在 list 中多次检入GSP Grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27886616/