2010-07-29 4 views
3

Je veux définir un paramètre jsp à une valeur d'attribut qui peut contenir des symboles spéciaux, puis utiliser un formulaire GET submit pour passer le paramètre à un contrôleur de servlet. Par exemple, le paramètre est:Comment passer une chaîne contenant des guillemets d'une jsp à une servlet via l'URL using get method

<input type="hidden" name="searchTerms" value="${sessionScope.combTerms}"></input>

Je remarqué si sessionScope.combTerms contient des guillemets doubles, par exemple. location:"LOC1", le contrôleur recevra uniquement la valeur de searchTerms pour être location: dans lequel le LOC1" a disparu. Que dois-je faire pour m'assurer que la chaîne sessionScope.combTerms est correctement transmise au contrôleur? Merci d'avance.

Répondre

3

Lors du remplissage des valeurs d'entrée HTML, utilisez toujours fn:escapeXml(). Il nettoie non seulement la valeur des entités HTML qui pourraient risquer que votre code HTML soit malformé (une citation indique la fin de la valeur de l'attribut, c'est pourquoi le reste de votre valeur est perdue), mais cela vous épargnera également des endroits où vous réafficher une entrée contrôlée par l'utilisateur.

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 

<input type="hidden" name="searchTerms" value="${fn:escapeXml(sessionScope.combTerms)}"> 

Pas besoin-URLEncode il. Le webbrowser le fera déjà automagiquement. Essayez-le vous-même avec un & dans la valeur. Vous verrez que le webbrowser le change %26. Le webbrowser prendra également soin d'analyser les entités XML pour qu'elles se retrouvent correctement dans l'URL. C'est à dire. vous obtenez " côté serveur, pas &#34;.

+0

C'est magnifique !! C'est vraiment ce que j'avais en tête. Une belle solution soignée. Merci beaucoup Balus !! Tu es un génie. – Ken

+0

De rien. – BalusC

1

Vous codez la valeur avant de la placer dans le formulaire et ensuite le décoder dans le serlvet.

(Vous pourriez avoir déjà vu cela comme 20% dans les paramètres d'URL)

Voici les classes respectives.

http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html

http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/net/URLDecoder.html

+0

Salut kazanaki, merci pour votre réponse. Hmhm ... mais je veux aussi afficher 'sessionScope.combTerms' en utilisant' '. Après encodé, l'affichage est mauvais. Donc, je voudrais avoir un peu plus comme décodé dans le fichier. JSP à des fins d'affichage. Plus de suggestion? Merci. – Ken

+0

mettre deux attributs dans la demande - un codé et un non codé – Bozho

+0

ah ... cool .. cela fonctionne. Merci kazanaki et Bozho. – Ken

1
<% String st = str.replaceAll("\"", "&quot;");%> ,and use st instead of str.