簡體   English   中英

我想在單個jsp頁面中使用java變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM