[英]I want to use java variable in single jsp page
<%!
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();
}
%>
<%!} %>
我從html像
<input type="submit" id="btnSync" value="Sync" class="button" name="Sync" onclick="<%runJavaMethod(r.getInt(1));%>"/>
因此,我們需要runJavaMethod參數。
onclick="<%runJavaMethod(r.getInt(1));%>"/>
HTML / Javascript在客戶端播放,而JSP / Java在服務器端播放。
簡直你做不到。 您可能會誤解JSP和HTML/JavaScript
存在於同一文檔中。 是的,但是JSP部分是在服務器端本身進行編譯的。 您可以做的是必須發出服務器請求。 最有可能查看Ajax請求。
您正在嘗試將 Java和Javascript / html這兩種語言混合在一起,即onclick
是Javascript事件,並且無法從Javascript調用runJavaMethod
。
簡而言之,您無法使用Javascript直接調用Java方法(在scriptlet內部),因為從服務器加載時,所有JSP代碼都會生成(成為)html 。
因此,如果必須解決問題,請在onclick
上調用一個在服務器上命中servlet / controller方法的URL來完成該工作(即執行業務邏輯)。
更為重要的一點是Scriptlet是遺留代碼,我強烈建議不要使用Scriptlet來生成或管理html內容,而應使用JSTL,以便在關注點(即業務邏輯和用戶界面要求)之間有明確的區分 。
另外,我強烈建議您從此處閱讀JSP最佳實踐並遵循它們。
您正在混合兩種不同的事物。 JSP是服務器端代碼,其呈現的響應是發送回瀏覽器的HTML。在您的情況下,Javascript是純客戶端。
如果您真的想調用服務器端處理,而不是通過Ajax調用創建一個簡單的Java腳本函數並獲得響應,那么您可以使用它。
我建議在后端類中發送JSP的所有邏輯,而不是放在jsp中的好習慣。 JSP是UI設計的理想選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.