usando # URL como valor chave
-
02-01-2020 - |
Pergunta
Meu servidor java funciona da seguinte maneira:
http://locahost:5555/?search="java"
O link acima não funcionará correctamente.No entanto, se eu quiser usar o "#", como parte da cadeia de caracteres de pesquisa, tudo dá errado.Por exemplo:
http://locahost:5555/?search="c#"
Por alguma razão tudo após o "#" é ignorado.Se eu usar o decodificado versão de "#" ele funciona muito bem novamente.Por exemplo:
http://locahost:5555/?search="c%23"
O sistema deve ser utilizado por pessoas que não entendem a codificação de url para que nunca iria colocar %23 em vez de #.Existe uma maneira de contornar isso?
Solução
o usuário supostamente não devem acessar a url diretamente, por isso, se eles colocam "c#" na url, não haveria processo, por outro lado, você pode usar
<form action="yourcontroller" method="post">
<input type="text" name="txtSearch" />
<input type="submit" value="search"/>
</form>
com isso, ele vai cuidar de caracteres especiais como "#" que você mencionou.
não se esqueça de pegar o parâmetro no seu controlador,
request.getParamter("txtSearch");
Outras dicas
Diferente de codificação, não há nenhuma maneira em torno dela.Mais sobre a cadeia depois de #
trata como a location
da URL.
Cadeia depois de #
não serão passados para o servidor através de parâmetros GET.Utilizar o método POST em vez disso.
https://developer.mozilla.org/en-US/docs/Web/API/Window.location
Ele é o navegador.O servidor nunca fica um pedido com a hashtag (#) símbolo, apenas até o símbolo.
Um javascript solução é provavelmente uma má idéia.