如何在列表中多次登记GSP Grails

时间:2015-01-11 11:41:11

标签: java grails gsp

我想在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=""/>&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>

1 个答案:

答案 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>