0

我有以下代码片段:

<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']以返回正确的格式?

4

1 回答 1

3

params['bookmarks']会给你一个多值参数的列表,但是String如果只有一个值,并且null根本没有值,并且each在 String 上迭代字符串中的字符。所以看起来你的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>
于 2012-08-02T16:27:19.290 回答