Domanda

Il mio server Java funziona come segue:

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

Il link sopra funzionerebbe bene.Tuttavia, se mai voglio usare "#" come parte della stringa di ricerca, tutto va storto.Ad esempio:

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

Per qualche motivo tutto dopo "#" viene ignorato.Se utilizzo la versione decodificata di "#" funziona di nuovo bene.Ad esempio:

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

Il sistema deve essere utilizzato da persone che non capiscono la codifica dell'URL in modo che non possa mai% 23 anziché #.C'è comunque intorno ad esso?

È stato utile?

Soluzione

L'utente presumibilmente non dovrebbe accedere direttamente all'URL, quindi se inseriscono "C #" nell'URL non ci sarebbe alcun processo d'altra parte è possibile utilizzare

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

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

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

</form> 
.

Con questo, si prenderà cura dei personaggi speciali come "#" che hai menzionato.

Non dimenticare di catturare il parametro nel controller

request.getParamter("txtSearch");
.

Altri suggerimenti

Oltre a una codifica non c'è modo intorno ad esso.Più sopra la stringa dopo # Treats come location dell'URL.

String After # non verrà superato al server tramite i parametri Ottieni.Usa invece il metodo post.

https://developer.mozilla.org/en-US / Docs / Web / API / Window.Location

è nel browser.Il server non riceve mai una richiesta con il simbolo Hashtag (#), appena fino al simbolo.

Un workaround JavaScript è probabilmente una cattiva idea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top