2009-06-11 6 views
0

J'ai un problème étrange avec un type d'entrée caché et je me demandais si quelqu'un avait déjà vu quelque chose comme ça avant. J'enregistre environ 2 Mo de données dans un champ caché, dans un format séparé par des virgules, puis j'enregistre ces données sur un fichier jsp qui définit simplement des en-têtes (la sortie est reconnue comme un fichier Excel) puis répercute les données . Je vois que la variable contenant ces données est vide du côté de jsp, même si je vois qu'elle est postée sur le serveur (je la vois avec un sniffer HTTP) et toutes les données semblent être contenu correctement dans le champ caché (je vois cela avec firebug). Cependant, si je change le type d'objet en zone de texte, les données sont reçues correctement du côté du serveur.Type d'entrée "caché" par rapport à la zone de texte

Une autre chose étrange que j'observe est que si j'utilise l'encodage d'URL sur les données, même en utilisant une zone de texte, rien ne parvient au serveur. Si je n'utilise pas l'encodage d'URL mais que j'ai le champ caché, rien n'est sauvegardé dans le champ (c'est vide quand je le vérifie avec firebug). Je ne comprends pas non plus ...

Je me demande s'il existe un paramètre de sécurité spécial qui empêche les champs cachés de publier de grandes quantités de données sur un serveur Web Tomcat. Est-ce que quelqu'un sait quelque chose à ce sujet?

Si cela fait une différence, j'utilise le enctype par défaut sur le formulaire (application/x-www-form-urlencoded)

J'utilise actuellement un texte sont et définir le style de visibilité " caché "mais il me dérange de ne pas comprendre ce qui se passe * soupir ... Toute suggestion est appréciée

+0

est votre méthode de formulaire mis à la poste? – RedFilter

Répondre

4

Je pense avoir 2 Mo de données dans un champ caché est une erreur malgré tout. Vous devriez stocker ce genre de chose sur le serveur dans le cadre de l'état de la session, et ne pas l'envoyer entre le serveur et l'utilisateur, comme vous le faites. Au lieu de cela, utilisez un champ caché ou un cookie pour la variable de session *, qui sera utilisé pour rechercher les 2 Mo de données.

* Ne le faites pas à la main. JSP prend déjà en charge l'état de la session, entre autres choses.

0

Le serveur ne peut pas faire la différence entre une zone de texte et une zone de texte. Tous les éléments de formulaire sont simplement affichés en tant que paires nom/valeur. Il est fort probable que vous ayez un guillemet quelque part dans vos données qui termine l'attribut de valeur de l'élément d'entrée caché. Par exemple:

<input type="hidden" value="Double " quote" /> 

Vous devez échapper aux doubles guillemets en les remplaçant par &quot;

<input type="hidden" value="Double &quot; quote" /> 
Questions connexes