grails - 在gsp页面中对数组元素进行分组显示

标签 grails groovy

我有以下代码片段:

<div id="bookmarks" style="height:150px;width:250px; padding-left: 100px;margin-top: -54px;font:16px/26px Georgia, Garamond, Serif;overflow:scroll;">
    <g:each in="${params['bookmarks'] }" var="bookmark">
        <p><a onclick="seek('${bookmark}');">${bookmark}</a></p>
    </g:each>
</div>

但是,当我查看viewer.gsp时,我看到:
0
0
:
0
4
:
3
5
,
0
0
:
1
6
:
0
0
,
0
0
:
2
5
:
0
1

而不是通常的00:04:35。应该如何格式化$params['bookmars']数组以返回正确的格式?

最佳答案

params['bookmarks']将为您提供一个多值参数的列表,但如果只有一个值,则为String,如果根本没有值,则为null,并且String上的each遍历字符串中的字符。因此,看来您的bookmarks参数是单值参数,其值是逗号分隔的字符串00:04:35,00:16:00,...,而不是多值参数(即像bookmarks=00:04:35&bookmarks=00:16:00&...这样的表单提交)。

对于可能是多值的参数,可以使用params.list('...'),它可以保证您有一个列表(零,一个或多个适当的项)。

<g:each in="${params.list('bookmarks') }" var="bookmark">

但是,如果您坚持使用逗号分隔的单个值,则必须自己拆分它:
<g:each in="${params.bookmarks?.split(/,/)}" var="bookmark">

另外,您可能需要使用相关的encodeAs...调用来确保获得有效的JavaScript和HTML:
<a onclick="seek('${bookmark.encodeAsJavaScript()}');">${bookmark.encodeAsHTML()}</a>

关于grails - 在gsp页面中对数组元素进行分组显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781440/

相关文章:

java - 在没有 Grails 的普通 Spring MVC 中使用 GSP View

java - Grails 一对多关系

jquery - 如何在 Play 中的 groovy 模板中使用 jQuery 模板?

grails - 在Grails中启动时出错

grails - 如何阻止 Grails 渲染默认 View ?

xml - 如何使用 XmlSlurper 删除 Groovy 中的元素?

Groovy + 将日志写入文件 + 使用注解注入(inject)日志

grails - 带TimeZone转换的Jodatime Groovy/Grails日期范围搜索

jquery - 对Grails Controller的JQuery Ajax请求不起作用

session 超时后的 Grails Spring Security 重定向