2010-07-21 5 views
1

J'ai un problème avec la barre d'encodage dans l'URL.Problème avec la barre oblique de codage dans l'URL

Problème:
de demande Page GSP:
< a href = "http://foo.cz/myapp/page/show?url=home/gallery" > Galerie </a >

J'obtenu:
http://foo.cz/myapp/page/show?url=home%2Fgallery
adresse ligne dans le navigateur Internet.

Problème avec le caractère de codage de "/" à "% 2F".

Explication:
ce lien est dans mon dossier gsp:
< a href = "http://foo.cz/myapp/page/show?url=home/gallery" > Galerie </un >

après clic demande passe au contrôleur:

def show ={ 
    def page = Page.findByUrl(params.url) //it works 
} 


alors j'ai obtenu la page gsp dans mon navigateur Internet. Tous fonctionnent très bien, je me suis nécessaire page, mais dans la ligne adresse dans le navigateur Internet, j'ai vu:
http://foo.cz/myapp/page/show?url=home%2Fgallery

Il n'y a pas de caractère "/", mais encode "% 2F"

la motivation
Je veux mettre l'URL dans UrlMapping.groovy à:

"/${url}" (controller:"page", action:"show") 


et obtenez:
http://foo.cz/myapp/home/gallery/
mais il y a un problème caractère encode "/".

Finition
Pouvez-vous m'aider s'il vous plaît?

Merci beaucoup Tom

+0

Adresse ligne, vous obtiendrez toujours http://foo.cz/myapp/page/show?url=home%2Fgallery parce que votre navigateur code juste l'url. Vous pouvez éviter cela en utilisant le mapping url donc http://foo.cz/myapp/home/gallery/ sera normalement passé dans votre contrôleur (les grails décodent automatiquement l'URL). – Oleksandr

Répondre

0

il est pas remplacer difficile "% 2F" à "/", mais, il y a problème avec la cartographie de l'URL. La transformation est dans le tag Grails CreateLink.
Voir la source. Il y a impliquer la méthode String encodeAsURL() comme Aaron Saunders l'a dit ci-dessus. Par exemple, vous pouvez uniquement écrire votre propre tag et utiliser la méthode String replaceAll ("% F2", "/") et cela fonctionne.

Je suis URL souhaitée dans la ligne d'adresse dans le navigateur Internet:
http://foo.cz/myapp/page/show?url=home/gallery

et je l'ai remplacé dans MappingURL.groovy à:
http://foo.cz/myapp/home/gallery

Hmm, je dois utiliser wildcart et autre code sale dans le contrôleur. Ce n'est pas du bon code.

Maintenant, je sais, que n'est pas une bonne idée d'utiliser slash (/) dans les paramètres comme Olexandr dit ci-dessus.

Cela fonctionne très bien lorsque vous utilisez par exemple "-" ou un autre caractère d'URL de sauvegarde comme délimiteur de paramètres.

Merci beaucoup à tous les gourous.

Tom

Questions connexes