2010-01-18 6 views
5

J'ai commencé peu de temps il y a avec JSP, JSTL, HTML et JavaScript alors voici mon problème:ensemble var value de la valeur du champ de saisie

je dois définir la valeur d'une variable la valeur d'une entrée cachée. Une autre option est si possible de comparer l'utilisation

<c:if test="...."> 

la valeur d'une variable que j'ai envoyé à la demande avec la valeur de l'entrée cachée.

Merci.

Mise à jour

J'ai essayé, mais ne peut le faire fonctionner.

J'ai ce champ qui contient l'ID et l'objet. J'ai aussi la liste avec les objets, ce que je dois faire est de trouver l'objet lié à cet ID.

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

mais si je fais ceci:

<c:set var="dd" value="${param.id1}" /> 
<input type="text" value="${dd}" /> 

Le texte d'entrée est vide, mais le texte relatif à ID1 affiche 850 (la valeur est Dinamic)

Toute suggestion pourquoi ne fonctionne pas ?

Mise à jour 2

J'ai besoin "multipart/form-data" parce que sous la forme que je dois télécharger une photo. Je comprends comment obtenir les paramètres de Java, mais comme je n'utilise pas le serveur mais les pages JSP, il y a un moyen de le faire? Juste besoin de lire cet élément d'entrée et enregistrez-le dans une variable.

Répondre

3

Vous pouvez accéder aux paramètres de la requête par variable implicite ${param}.

E.g. http://example.com/context/page.jsp?foo=bar en combinaison avec

<c:if test="${param.foo == 'bar'}"> 
    The foo's param value is bar! 
</c:if> 
<c:if test="${param.foo != 'bar'}"> 
    The foo's param value is not bar, it is: ${param.foo} 
</c:if> 

témoignerait de la première condition.

Si vous voulez vraiment garder un élément d'entrée caché dans les requêtes suivantes (qui n'a pas été vraiment fait clair dans votre question), tout ce que vous devez essentiellement faire est:

<input type="hidden" name="foo" value="${param.foo}"> 

Mise à jour: selon votre mise à jour: vous devez également donner à l'élément d'entrée un nom. Ainsi, par exemple.

<input type="text" name="id1" value="${param.id1}" /> 

De cette façon, il est disponible par request.getParameter("id1") et par nature aussi ${param.id1}. Le voyez-vous maintenant?

Mise à jour 2: selon votre commentaire ici: certainement c'est lié à enctype="multipart/form-data". Avec cet encodage, les paramètres de la requête ne sont plus dans la carte des paramètres, mais dans le corps de la requête, à cause du mélange avec les données binaires (upload de fichiers).Ça va être une longue histoire pour tout expliquer, mais fondamentalement, vous devez analyser la demande vous-même. Si vous êtes sur Servlet 2.5 ou plus, le Apache Commons FileUpload est très utile ici. Lire en particulier "Guide de l'utilisateur" et "Foire aux questions" là-bas pour voir des exemples de code et d'apprendre à l'utiliser de la bonne façon (également dans MSIE!). Vous pouvez même décider de résumer le FileUpload de sorte que vous pouvez coller en utilisant HttpServletRequest#getParameter() et ${param} de la manière habituelle, voir également this article. Si vous êtes déjà sur Servlet 3.0, vous pouvez utiliser HttpServletRequest#getParts(). Vous pouvez même l'abstraire de sorte que vous pouvez coller en utilisant HttpServletRequest#getParameter() et ${param} de la manière habituelle, voir aussi this article.

Mise à jour 3: Oh, vous vraiment ne veux pas utiliser JSP pour faire tout le traitement. Là ce n'est pas pour. Il est grand temps d'apprendre Servlet. En outre, lorsque vous utilisez un Filter qui remet tous les paramètres du corps de la demande dans la mappe des paramètres de la requête (comme décrit dans les deux articles), vous n'avez pas nécessairement besoin d'un Servlet après tout.

+0

Ne fonctionnant toujours pas, l'élément d'entrée portait déjà le nom "id1". Toutes mes entrées ont un nom mais ne peuvent pas en obtenir par $ {param.XXX} est-il lié que le formulaire est "enctype =" multipart/form-data "? – framara

+0

Je n'ai pas compris complètement le Update3, vous signifie qu'il n'y a aucun moyen de savoir à partir de la même .jsp la valeur d'un élément d'entrée si le formulaire est enctype = "multipart/form-data"? – framara

+1

N'utilisez pas JSP pour la logique métier. appartient à de vraies classes Java. – BalusC

Questions connexes