2017-04-08 87 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(); 
     } 

    %> 
    <%!} %> 

,我来自HTML一样我想用Java变量单jsp页面

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

调用功能,所以我们要runJavaMethod参数。

+0

你的问题是什么? – GhostCat

回答

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

HTML/JavaScript的播放在客户端和服务器端的JSP/Java的戏剧。

只是你不能。您可能会误解JSP和HTML/JavaScript存在于同一个文档中。是的,但JSP部分在服务器端编译本身来到客户端。 你可以做的是你必须提出服务器请求。最有可能看看Ajax请求。

1

您正在试图混淆了两种语言即Java和JavaScript/HTML在一起,即onclick是一个JavaScript事件,你不能从Javascript调用runJavaMethod

简而言之,您不能使用Javascript直接调用Java方法(存在于scriptlet中),因为所有JSP代码在从服务器加载时生成(变为)html。

所以,如果你要解决这个问题,在onclick,你需要调用,它击中一个servlet /控制器的方法服务器来完成这项工作(即,执行业务逻辑)上的URL。

一个更重要的一点是,小脚本是遗留代码,我强烈建议不使用它们生成或管理HTML内容,而使用JSTL,这样会有顾虑之间的清晰的分离(即业务逻辑和用户界面要求)

此外,我强烈建议您阅读here的JSP最佳实践并遵循它们。

1

你正混合两种不同的东西。 JSP是服务器端代码,它的呈现响应是发回给浏览器的HTML。在你的情况下,JavaScript是纯粹的客户端。

如果您真的想要调用服务器端处理,而不是使用Ajax调用创建简单的Java脚本函数并获取哪些可以使用它的响应。

我建议在后端类中发送所有JSP的逻辑不是放在jsp中的好习惯。 JSP非常适合UI设计。