java - 如何在 list 中多次检入GSP Grails

标签 java grails gsp

我想在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=""/>&nbsp; Call me
                            </td>
                            </tr>
                        </g:if>
                       <g:else>            
                           <tr>
                               <td>
                                   <g:checkBox name="callMe" checked="false"
                                                value=""/>&nbsp; Call me
                               </td>
                           </tr>
                       </g:else>
     <g:if test="${product.id == '4'}">
                            <tr>
                            <td>
                             <g:checkBox name="callMeAgain" checked="true"
                                                value=""/>&nbsp; Call me again
                            </td>
                            </tr>
                        </g:if>
                       <g:else>            
                           <tr>
                               <td>
                                   <g:checkBox name="callMeAgain" checked="false"
                                                value=""/>&nbsp; Call me again
                               </td>
                           </tr>
                       </g:else>
 <g:if test="${product.id == '5'}">
                            <tr>
                            <td>
                             <g:checkBox name="dontCallMeAgain" checked="true"
                                                value=""/>&nbsp; Dont call me again
                            </td>
                            </tr>
                        </g:if>
                       <g:else>            
                           <tr>
                               <td>
                                   <g:checkBox name="dontCallMeAgain" checked="false"
                                                value=""/>&nbsp; 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/

相关文章:

java - 如何在 Spring 中将 SQLErrorCodeSQLExceptionTranslator 和 DAO 类与 @Repository 一起使用?

java - 在 JUnit 测试用例中使用 Try Catch

java - 如何使用 java Stream API 查找中值

grails - 为引导数据创建自定义迁移脚本并在 Grails 中执行一些与 SQL 相关的操作

grails - 异常:Grails标记[g:applyLayout]未关闭

grails - 每当某些服务发生故障时,在 Grails View 顶部显示状态消息

grails - GSP中的双重关闭失败

java - 以异步方式实现 Envers 审计的可能性

ajax - Grails:Ajax响应为空

templates - 如何在Grails 3.x中创建可重用的布局和脚手架模板