2017-04-08 3 views
2
<%! 
    public void runJavaMethod(int id) 
    { 
    %> 
    <% 
     try{ 
      String icd = request.getParameter("icd"); 
      String inm = request.getParameter("inm"); 
      String istk = request.getParameter("istock"); 
      String sstk = request.getParameter("sstock"); 
      String upr = request.getParameter("uprice"); 
      String spr = request.getParameter("sprice"); 

      r = s.executeQuery("select * from itemsyncdata"); 
      while(r.next()) 
      { 
       s.executeUpdate("update itemsyncdata set itemcode='"+icd+"',itemname='"+inm+"',instock='"+istk+"',storestock='"+sstk+"',unitprice='"+upr+"',storeprice='"+spr+"' where id='"+a+"'"); 
      } 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

    %> 
    <%!} %> 

Und ich Funktion bin Aufruf verwenden, aus html wieIch möchte Java-Variable in einzelnen jsp Seite

<input type="submit" id="btnSync" value="Sync" class="button" name="Sync" onclick="<%runJavaMethod(r.getInt(1));%>"/> 

So wollen wir runJavaMethod Parameter.

+0

Und was ist Ihre Frage? – GhostCat

Antwort

1
onclick="<%runJavaMethod(r.getInt(1));%>"/> 

HTML/Javascript Plays auf Client-Seite und JSP/Java spielt auf Server-Seite.

Einfach kann nicht. Sie könnten falsch verstehen, dass JSP und HTML/JavaScript in demselben Dokument vorhanden waren. Ja, aber JSP-Teil kompiliert auf der Serverseite selbst kommt zum Client. Sie können eine Serveranfrage stellen. Wahrscheinlich Ajax-Anfragen.

1

Sie versuchen zwei Sprachen zu mischen das heißt, Java und Javascript/html zusammen das heißt, ist onclick ein Ereignis Javascript und Sie können runJavaMethod von Javascript nicht anrufen.

In einfachen Worten, Sie können nicht direkt eine Java-Methode (im Scriptlet vorhanden) mit Javascript aufrufen, weil Ihr gesamter JSP-Code HTML erzeugt, wenn er vom Server geladen wird.

Also, wenn Sie das Problem zu beheben haben, auf onclick, müssen Sie Anruf eine URL, die einen Servlet/Controller-Methode auf dem Server trifft die Arbeit zu tun (das heißt, führt die Business-Logik).

Ein weiterer wichtiger Punkt ist, dass Scriptlets Legacy-Code und ich dringend davon abgeraten, sie verwenden, um die HTML-Inhalte zu generieren oder verwalten, eher JSTL verwenden, so dass es eine klare Trennung zwischen den Anliegen sein wird (dh Unternehmen Logik- und Benutzerschnittstellenanforderungen).

Ich empfehle auch dringend, lesen Sie die JSP Best Practices von here und folgen Sie ihnen.

1

Sie mischen zu zwei verschiedenen Dingen. JSP ist serverseitiger Code und es wird als Antwort der HTML zurückgegeben, der an den Browser zurückgesendet wird. Javascript ist in Ihrem Fall reine Clientseite.

Wenn Sie wirklich eine serverseitige Verarbeitung aufrufen möchten, erstellen Sie eine einfache Java-Skriptfunktion mit Ajax-Aufruf und erhalten Sie die Antwort zurück, die Sie verwenden können.

Ich schlage vor, senden Sie die ganze Logik von JSP in der Backend-Klasse nicht eine gute Übung, um in die Jsp. JSP ist ideal für das UI-Design.