2017-05-18 2 views
0

Im folgenden Code-Snippet gibt es die isRowInDueCauseTable Methode (die in einer anderen Klasse ordnungsgemäß funktioniert) gibt einen booleschen Wert zurück. Aber wenn es in einer JSP-Datei verwendet wird, gibt es immer True zurück, obwohl es die isRowInDB Variable entsprechend ändern sollte. Aber es ist immer wahr, also bekommt isRowExists Methode immer true als Parameter. Es scheint, wie es nur zum ersten Mal ausgeführt wird, und nie wieder auswertetJSP-Datei-Methode scheint wie nie aufgerufen wird nach dem ersten Mal ausführen

if (sAction == "newRow") { 
      <% 
      tblMgrHome = (TableManagerHome)pageEnv.get("ejb/TableManager"); 
      tblMgr = tblMgrHome.create(); 
      boolean isRowInDB = tblMgr.isRowInDueCauseTable(
       request.getParameter("REASON"), 
       request.getParameter("TASK"), 
       request.getParameter("RESULT"), 
       request.getParameter("RESULT_CAUSE") 
       ); 
       %> 
      console.log("HERE IS THE BOOLEAN: " + <%=isRowInDB%>); 
      isRowExists(<%=isRowInDB%>); 
      setMenuClick(false); 
     } 

Und ich bin sicher, dass es auch wieder falsch geben kann, weil dieser Teil der Anwendung zu arbeiten. Was ist daran falsch?

+0

Was ist daran falsch? Es scheint mir, dass dieser Code ausgewertet wird, wenn die Seite das erste Mal lädt, so dass es nur beim ersten Mal aufgerufen wird. Wenn dann Ihr Java-Code diesen Wert ändert, wird er nicht auf die Seite dynamisch alleine reflektiert. – quirimmo

+0

Ich möchte, dass jedes Mal, wenn eine Schaltfläche angeklickt wird, ausgewertet wird, dann wird die Javascript-Methode, die dieses Snippet enthält, aufgerufen – dmbdnr

+0

Es ist eine Menge, die ich nicht mache verwende JSP nicht, aber aus meinem Speicher wird JSP ausgeführt, sobald die Seite geladen ist, dann wird sie nicht mehr ausgeführt. Versuchen Sie, ein einfacheres Beispiel zu machen, und fügen Sie innerhalb dieser Methode nur einen Zähler ein, der von Java inkrementiert wird. Dann logge diesen Wert mit der Konsole. Kannst du sehen, dass der Zähler weiterläuft? oder siehst du immer den Startwert? – quirimmo

Antwort

0

Dies ist JSP-Code, der nur einmal ausgewertet wird, während der HTML-Code im Browser angezeigt wird. Machen Sie eine API für diese isRowInDueCauseTable und verwenden Sie Ajax, um es immer wieder vom Browser zu überprüfen.

Verwandte Themen