2013-04-21 30 views
0

你好,這裏是我想要做的。 當用戶按下鏈接時,它將值添加到列表或在參數內部設置。例如在第一次點擊它增加了MYID = 1,則它變得/?MYID = 1 然後在一些其它鏈路的第二次點擊它增加MYID = 25,那麼它應該成爲/?MYID = 1 & MYID = 25Grails增值設置裏面的參數

我已經試過這樣:

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

,但它只是之間進行切換/身份識別碼= 1 /身份識別碼= 25而不是變成/身份識別碼= 1名&身份識別碼= 25???

我該怎麼做?

回答

0

發現了其他可能的解決方案轉換身份識別碼。下行是列表或集必須有一個可以忽略的虛擬值。例如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被使用,因爲重複的值不想要的。
我在(列表或設置)中使用虛擬值的原因是,當第一個值有兩個或更多個字符時,它會變成分離的。例如,如果第一次按下「+ ab」鏈接,它會變成[a,b]而不是[ab]。然後,如果再次按下,它會變成[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> 
Answered my own question just in case another noobie like me has come across same problem
1

這是因爲您試圖將密鑰myId添加到params。由於它已經有了鑰匙,所以這個值會被更新。

你可以用,之類的東西來分隔你的值,只剩下一個鍵。

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

在你的控制器,你可以在列表中與tokenize()

println params.myId.tokenize(',') 
+0

謝謝你,完全解決它 – 2013-04-22 02:08:58