【问题标题】:How to do looping in GSP?如何在 GSP 中进行循环?
【发布时间】:2012-11-02 16:37:15
【问题描述】:

我有 GSP 文件,我将从控制器获取一个值,例如 ${paramsValue?.ruleCount} 是 3,基于此我必须创建表行。

gsp有什么办法吗

【问题讨论】:

    标签: grails gsp


    【解决方案1】:

    怎么样

    <g:each in="${(1..paramsValue?.ruleCount).toList()}" var="count" >
       ...
    </g:each>
    

    ?

    但是,如果您准备一个列表,其中包含要显示在控制器中的内容,那就更好了...

    更新:

    试一试:

    <% def count=5 %>
    <g:each in="${(1..count).toList()}" var="c" >
      ${c}
    </g:each>
    

    有效。

    <% def count=5 %>
    <g:each in="${1..count}" var="c" >
      ${c}
    </g:each>
    

    也有效,而且更短。

    更新2:

    您似乎想使用 URL 参数作为计数。此代码将在这种情况下工作:

    <g:each in="${params.count?1..(params.count as Integer):[]}" var="c" >
      ${c}
    </g:each>
    

    它会检查是否有计数参数。如果没有,它将返回一个空列表进行迭代。如果设置了count,它会将其转换为Integer,创建一个Range并隐式地将其转换为一个列表以进行迭代。

    【讨论】:

    • 您收到的错误信息是什么 - 可能是您的 paramsValue?.ruleCount 不是数字吗?然后试试paramsValue?.ruleCount as Integer
    • 是的,我仍然有一个强制转换异常,org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: 在线评估表达式 [1..paramsValue?.ruleCount as Integer] 时出错[162]:在 C__RMSWorkSpacewithServiceRMS_rmsportal_grails_app_views_requestService_submit_gsp$_run_closure2.doCall(submit.gsp:175) 在 C__RMSWorkSpacewithServiceRMS_rmsportal_grails_app_views_requestService_submit 时,无法将具有类 'groovy.lang.ObjectRange' 的对象 '1..50' 转换为类 'java.lang.Integer' .gsp:1)
    • 查看我更新的代码...它必须是 [1..(paramsValue?.ruleCount as Integer)] 而不是 [1..paramsValue?.ruleCount as Integer]
    猜你喜欢
    • 1970-01-01
    • 2014-03-20
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 2016-02-27
    相关资源
    最近更新 更多