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値が 1 つしかなく、null値がまったくない場合eachは、文字列内の文字が反復処理されます。したがって、bookmarksパラメータは、値がカンマ区切りの文字列00:04:35,00:16:00,...である単一値のパラメータであり、複数値のパラメータではないようです(つまり、のようなフォーム送信bookmarks=00:04:35&bookmarks=00:16:00&...)。

多値の可能性があるパラメータの場合は、 を使用できますparams.list('...')。これにより、リストが保証されます (必要に応じて、0、1、または複数のアイテムを使用)。

<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 に答える