2011-01-17 4 views
1

Ich habe eine JSP-Seite erstellt. Wenn ich ein Kontrollkästchen oder beide Kontrollkästchen oder keines auswähle, müssen die entsprechenden Textfelder und das Listenfeld auf derselben Seite angezeigt werden.jsp in Javascript

Dafür habe ich versucht, eine Javascipt-Funktion aufzurufen, wenn ich das Kontrollkästchen anklicke. Die JavaScript-Funktion enthält Code zum Anzeigen der Textfelder. Aber es hat nicht funktioniert.

Da ich dieses Projekt in Struts mache, weiß ich nicht, wie man Check-Box-Wert bekommen. Und das Aufrufen der JavaScript-Funktion funktioniert. Aber nicht in JavaScript-Funktion JSP-Code eingeben.

Mein Code ist

<tr> 
<td>SEJ:</td> 
<td>SEJ 1:<html:checkbox property="sej1" value="on" onclick="checkbox_trial()"></html:checkbox></td> 
<td>SEJ 2:<html:checkbox property="sej2" value="on" onclick="checkbox_trial()"></html:checkbox></td> 
</tr> 


    <script type="text/javascript"> 
    function checkbox_trial() 
    { 

     <% if(request.getParameter("sej1")=="on"){ 
    %> 
    <tr><td>SEJ1 Age<html:text property="sej1_age"></html:text></td></tr> 
    <tr><td>SEJ1 DOI<html:text property="sej1_doi"></html:text></td></tr> 
    <%} 

     else if(request.getParameter("sej2")=="on"){%> 
    <tr><td>SEJ2 Age<html:text property="sej2_age"></html:text></td></tr> 
     <tr><td>SEJ2 DOI<html:text property="sej2_doi"></html:text></td></tr> 
    <%} 

     else if((request.getParameter("sej1")=="on")&&(request.getParameter("sej2")=="on")){%> 
    <tr><td>SEJ1 Age<html:text property="sej1_age"></html:text></td></tr> 
    <tr><td>SEJ1 DOI<html:text property="sej1_doi"></html:text></td></tr> 
    <tr><td>SEJ2 Age<html:text property="sej2_age"></html:text></td></tr> 
    <tr><td>SEJ2 DOI<html:text property="sej2_doi"></html:text></td></tr> 
    <%} 

     else{%> 
    NOTHING <% } %> 
    } 

+0

Sie möchten etwas Code posten, damit wir auf Ihre Frage antworten können? Insbesondere müssen wir HTML und JavaScript und nur die relevanten Teile sehen. Bitte poste nicht dein gesamtes Projekt;) – jmort253

Antwort

3

Dies ist, wie es funktioniert: Java/JSP auf Webserver läuft, HTML/CSS/JS produziert, Webserver es zu Web-Browser sendet, Web-Browser läuft HTML/CSS/JS. Nicht Java/JSP. Klicken Sie mit der rechten Maustaste auf die Seite im Webbrowser und wählen Sie Quelle anzeigen. Wenn Java/JSP seine Arbeit richtig gemacht hat, sollten Sie darin keine Zeile sehen.

Wenn Sie Java-/JSP-Code mit JavaScript aufrufen möchten, müssen Sie eine weitere HTTP-Anfrage an den Webserver ausführen, damit dieser den Java/JSP-Code basierend auf der spezifischen Anfrage ausführen kann. Sie können dies tun, indem Sie entweder das Formular absenden oder eine asynchrone (ajaxische) Anfrage auslösen.

Angesichts der Fähigkeiten gezeigt, so weit und der Tatsache, dass Sie Struts verwenden, denke ich, Ajax wird ein bisschen zu komplex sein. Ich würde vorschlagen, nur das Formular auf Klick der

<input type="checkbox" name="show" value="true" onclick="submit()" /> 

Checkbox einreichen und dann lassen JSP bedingt die Eingabefelder angezeigt wird (nur ein JSTL Beispiel, da ich Struts nicht)

<c:if test="${param.show == 'true'}"> 
    <input type="text" /> 
    <select /> 
</c:if> 

Update: Sie haben übrigens ein weiteres großes Problem im Code. Sie können Zeichenfolgenwerte nicht mit == in Java-Code vergleichen (nur in EL möglich). In Java-Code müssen Sie equals() Methode verwenden. Andernfalls werden sie durch Bezugnahme anstatt nach Wert verglichen. Ich würde vorschlagen, auch grundlegendes Java zu lernen.

+0

Hässliche Lösung - aber ich stimme zu, basierend auf der OP-Frage (mangelnde Erfahrung), dass dies wahrscheinlich am besten ist. Ich empfehle definitiv OP schließlich lernen, AJAX zu verwenden. – jmort253

+0

Egal, ob das OP interessiert ist, meine Antwort auf [diese Frage] (http://stackoverflow.com/questions/4114742/simple-calculator-in-jsp) enthält ein schönes Beispiel für die ersten Ajax-Schritte. Es ist jedoch nicht Struts zielgerichtet. – BalusC

+0

Hallo Balu, ist es möglich für Sie, die erste Zeile von JSTL Beispiel zu erklären. Da ich neu bin, verstehe ich nicht – Pavalesh