2010-09-09 6 views
0

Utilisation Grails 1.3.3, lorsque vous demandez lien url:Comment gérer correctement une URL ayant deux fois les mêmes paramètres avec les mêmes valeurs?

/myapp/mycontroller/myaction?p1=v1&p2=v2&p1=v1 

params alors la valeur injectée dans le contrôleur Grails contiendra:

assert params.p1== ['v1','v1'] 

Il aurait été logique pour moi que params.p1 égal à 'v1' , non?

Dans tous les cas, existe-t-il un moyen de modifier ce comportement?

Merci.

+0

Votre question n'a pas de sens. Qu'est-ce que ** params.myparam1 **? Vous n'avez pas cela dans le code, vous avez juste ** p1 ** et ** p2 **. Demandez-vous si ** params.p1 ** devrait juste avoir un seul résultat de valeur au lieu d'une liste de résultats? –

+0

Désolé, c'était une erreur typée: question mise à jour – fabien7474

Répondre

0

Est-ce un bug dans votre application que le paramètre est deux fois? La plupart des gens pensent que cela devrait signifier qu'il a plusieurs valeurs, donc ce ne serait pas considéré comme un comportement étrange. Vous pouvez toujours récupérer la chaîne de requête et l'analyser vous-même si vous n'aimez pas le comportement par défaut.

1

Je suis d'accord avec @ Andrew, mais vous devez

p1.unique() [0] == « v1 »

+1

ne serait-ce pas échouer s'il n'y avait qu'un seul paramètre (p1) car ce ne sera pas un tableau? – omarello

0

Je suppose que vous ne voulez pas pour ramasser les doublons car vous ne voulez pas avoir à écrire du code dans chaque action du contrôleur pour gérer ce cas particulier. La seule chose que je peux vous dire est de ne pas autoriser les doublons en premier lieu, ou intercepter la demande en utilisant a filter et remplacer les valeurs de paramètres en double.

Questions connexes