我有以下代码片段:
<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/