0

こんにちは、ここで私がやろうとしていることです。ユーザーがリンクを押すと、リストに値が追加されるか、パラメーター内に設定されます。たとえば、最初のクリックで myId=1 が追加され、次に /?myId=1 になり、2 回目のクリックで他のリンクが myId=25 に追加され、その後 /?myId=1&myId=25 になります。

私はこれを試しました:

<g:link action="test" params="${params+['myId':'1']}"> first</g:link>
<g:link action="test" params="${params+['myId':'25']}"> second</g:link>

ただし、/?myId=1 または /?myId=25 の間で切り替わるだけで、/?myId=1&myId=25 になることはありません。

どうすればいいですか?

4

2 に答える 2

0

他の可能な解決策を見つけました。欠点は、リストまたはセットに無視できるダミー値が 1 つ必要なことです。たとえば、0.

<g:link action="test" params="${['ids': (params.ids as Set) + 'ab' ]}"> + ab</g:link> <br>
<g:link action="test" params="${['ids' :  (params.ids as Set) + 'cd' ]}"> + cd</g:link> <br>

コントローラーで:

if(!params.ids || params.ids?.size()==1) params.ids= [0]

as Set重複する値が必要ないため使用されます。
(リストまたはセット) でダミー値を使用している理由は、最初の値に 2 つ以上の文字がある場合、それが区切られて区切られるためです。たとえば、「+ ab」リンクを最初に押すと、[ab] ではなく [a,b] になります。その後、もう一度押すと[a、b、ab]になり、望ましい結果ではありません。ただし、すでに入っている0場合は [0, ab] となります。コントローラーの後半では、0単に無視できます。


値を削除する必要がある場合は、これを使用できます。

<g:link action="test" params="${['ids' :  params.ids - ['ab']]}"> - ab</g:link> <br>
<g:link action="test" params="${['ids' :  params.ids - ['cd']]}"> - cd</g:link> <br>
私のような別の初心者が同じ問題に遭遇した場合に備えて、自分の質問に答えました
于 2013-04-22T03:38:16.843 に答える