如何在列表中多次签入 GSP Grails
How do I check in GSP Grails more than one time in list
我想在 GSP 页面中进行检查。我有一份产品清单。该列表包含大约 21 种产品。我使用 g:each 循环 GSP 中的产品,并使用 if/else 进行检查。请参阅下面的代码。但是如果 product.id 不等于 3。页面 displays/prints 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>
如果您有 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>
我想在 GSP 页面中进行检查。我有一份产品清单。该列表包含大约 21 种产品。我使用 g:each 循环 GSP 中的产品,并使用 if/else 进行检查。请参阅下面的代码。但是如果 product.id 不等于 3。页面 displays/prints 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>
如果您有 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>