Question

Mon java server fonctionne comme suit:

http://locahost:5555/?search="java"

Le lien ci-dessus va fonctionner très bien.Toutefois, si jamais je veux utiliser "#" dans le cadre de la chaîne de recherche, tout va mal.Par exemple:

http://locahost:5555/?search="c#"

Pour une raison que tout ce qui est après "#" est ignorée.Si j'utilise la version décodée de "#" il fonctionne bien à nouveau.Par exemple:

http://locahost:5555/?search="c%23"

Le système doit être utilisé par des personnes qui ne comprennent pas le codage d'url, de sorte qu'ils n'auraient jamais mis %23 au lieu de #.Est-il de toute façon autour d'elle?

Était-ce utile?

La solution

L'utilisateur supposément ne devrait pas accéder directement à l'URL directement, si elles mettent "C #" dans l'URL, il n'y aurait aucun processus d'autre part que vous pourriez utiliser

<form action="yourcontroller" method="post">

   <input type="text" name="txtSearch" />

   <input type="submit" value="search"/>

</form> 

Avec cela, il prendra soin des caractères spéciaux comme "#" que vous avez mentionné.

N'oubliez pas d'attraper le paramètre de votre contrôleur

request.getParamter("txtSearch");

Autres conseils

Autres que l'encodage il n'y a pas moyen de contourner cela.De plus au cours de la chaîne après # traite comme l' location de l'URL.

La chaîne après # ne sera pas transmis au serveur par le biais de paramètres GET.L'utilisation de la méthode POST à la place.

https://developer.mozilla.org/en-US/docs/Web/API/Window.location

C'est dans le navigateur.Le serveur ne reçoit jamais une demande avec le symbole HASHTAG (#), juste au symbole.

Une solution de contournement JavaScript est probablement une mauvaise idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top