2017-09-09 1 views
1

J'essaie de transmettre la valeur dataquery1 à une servlet mais elle ne renvoie rien. Voici mon code dans jsp:La valeur du bouton radio d'entrée ne renvoie rien dans le servlet

<form id="formquery" action="queryD" method="post"> 
    <div>Search for : &nbsp;&nbsp; 

     <select id="option" class="enjoy-css" style="width:170px" name="optdata">      
    <option>Choose options</option> 
    <option value="scname">Scientific Name</option>      
    <option value="fname">Family Name</option> 
     <option value="location">Location</option> 
     <option value="wateruse">Water Usage</option> 
    </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input class="enjoy-css" type="submit" name="Search" value="Search"> 
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <a style="text-decoration: underline" onclick="resetQuery()">Reset</a><br/> 
    <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

    <div id="opt1" style="display:none;"> 
    Keyword : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    <input class="enjoy-css" style="width:120px" placeholder="Enter keyword" type="text" name="dataquery1"> 
    <br><br>  
    </div> 

    <br/> 
    <div id="opt2" style="display:none;"> 
    <input type="radio" name="dataquery1" value="DTC"> DTC<br> 
    <input type="radio" name="dataquery1" value="Engineering"> Engineering<br> 
    <input type="radio" name="dataquery1" value="Business"> Business<br> 
    <input type="radio" name="dataquery1" value="Science"> Science<br> 
    <input type="radio" name="dataquery1" value="Law"> Law<br> 
    </div> 

    <br/> 
    <div id="opt3" style="display:none;"> 
    <input type="radio" name="dataquery1" value="Low"> Low<br> 
    <input type="radio" name="dataquery1" value="Low to moderate"> Low to moderate<br> 
    <input type="radio" name="dataquery1" value="Moderate to high"> Moderate to high<br> 
    <input type="radio" name="dataquery1" value="High"> High<br> 
    </div> 

    </div> 
    </form> 

Et voici dans mon servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("queryD.java"); 

    //get query from newquery.jsp 
    String dataquery1 = ""; 
    dataquery1 = request.getParameter("dataquery1"); 

    //get option from newquery.jsp 
    String optdata = ""; 
    optdata = request.getParameter("optdata"); 

    System.out.println("OPTDATA : " + optdata + " | KEYWORD : " + dataquery1 + "."); 

Pour opt1 div, cela fonctionne parfaitement. Mais pour opt2 et opt3 il ne retourne rien. J'ai essayé de passer de l'entrée radio à l'entrée de texte, mais cela ne fonctionne toujours pas.

PS: opt1, opt2, opt3 L'affichage est réglé sur none mais j'ai la fonction qui l'appelle.

Répondre

0

J'ai essayé votre code dans mon propre IDE et j'ai reproduit votre problème. Le problème est celui-ci. Vos cases à cocher et 1 entrée de texte ont tous le même attribut de nom, donc quand vous l'envoyez à votre servlet, vous obtenez un tableau d'éléments ("dataquery1")! Si vous laissez l'entrée «mot-clé» vide, vous ne verrez rien lorsque vous essaierez d'y accéder via la servlet

Parce que vous essayez d'accéder à une valeur de chaîne lorsque vous devez accéder au tableau. Si vous ne laissez pas l'entrée "keyword" vide et essayez d'obtenir la valeur String de "dataquery1", vous obtiendrez automatiquement la première valeur du tableau.

Votre formulaire: your form

** L'onglet réseau de débogage (pour voir ce qui est envoyé): ** network tab in html inspect

Pour accéder à vos variables que vous devez utiliser un tableau. (Parce que « dataquery1 » est pas unique ") Vérifiez this answer pour plus d'informations sur ce

Voici comment vous le faites.

String[] test = request.getParameterValues("dataquery1"); 
String value1 = test[0]; 
String value2 = test[1]; 

ide test

+0

Ok, mais j'ai besoin que le 'dataquery1' soit une chaîne car je ne peux pas y accéder en tant que tableau pour un autre usage (travail plus compliqué plus tard.) Et si je renommer le 2ème et 3ème radiobox avec un nom différent? Considère-t-il toujours comme un tableau aussi? –

+0

Ensuite, vous devez utiliser des attributs de nom uniques. Ou changez simplement l'attribut de votre nom d'entrée de mot-clé en quelque chose d'autre. Ensuite, vous serez en mesure d'accéder aux cases à cocher normalement. –

0

Vous avez donné même nom à la radio Donner un nom à toutes les radios de la première div et un autre nom à la seconde div