2010-04-25 11 views
0

J'utilise jstl avec des listes déroulantes.comment soumettre un formulaire sans perdre des valeurs déjà sélectionnées dans le même formulaire

Lorsque je clique sur le bouton Soumettre, la spécification est validée mais les valeurs des listes déroulantes int sont réinitialisées. Donc je veux soumettre le formulaire sans perdre les valeurs déjà sélectionnées dans le formulaire car je dois rester toujours au même niveau dans le formulaire. Pour être plus clair, l'utilisateur choisit une valeur de ddl et clique sur le bouton éditer pour montrer d'autres options et remplissez-les à la même forme sans perdre ce qu'il a sélectionné.

J'ai essayé de traiter comme ça ...

<form action="myjsp.jsp" method="post"> 
<input type="Submit" value="Edit"> 

... mais il ne fonctionne pas.

Nous vous remercions de votre aide.

+0

en essayant d'intégrer votre proposition selon mon code que j'ai trouvé un problème parce que les options sont construites dynamiquement à partir de la base de données: donc j'ai comme ceci: Alors, comment pourrais-je faire face à cette situation. – kawtousse

+0

Pourriez-vous s'il vous plaît expliquer plus Iam juste confus. – kawtousse

Répondre

1

Vous devez prédéfinir les entrées avec les valeurs de paramètre de demande. Vous pouvez accéder aux valeurs des paramètres dans EL par ${param.name}. Fondamentalement:

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

Notez que ceci est XSS sensible. Vous devez toujours désinfecter les entrées de l'utilisateur. Vous pouvez utiliser le taglib JSTL functions pour cela.

<input type="text" name="foo" value="${fn:escapeXml(param.foo)}"> 

En cas de dropdowns rendus par élément HTML <select>, il est un peu plus compliqué. Vous devez définir l'attribut selected de l'élément HTML <option> en question. Vous pouvez utiliser l'opérateur ternaire dans EL pour imprimer l'attribut selected chaque fois que la valeur de l'option correspond à la valeur du paramètre de la requête.

exemple de base:

<select name="foo"> 
    <c:forEach items="${options}" var="option"> 
     <option ${param.foo == option ? 'selected' : ''}>${option}</option> 
    </c:forEach> 
</select> 
+0

Je veux comprendre plus cet exemple afin de l'appliquer mais je n'ai pas affiché mes options – kawtousse

+0

Donc ce que nous mettons exactement dans chaque paramètre Je suis novice Merci – kawtousse

+0

Remplacez simplement "foo" par le nom du paramètre réel. Le nom du paramètre est spécifié dans l'attribut 'name' du champ de saisie. – BalusC