【问题标题】:Call JSP method from javascript从 javascript 调用 JSP 方法
【发布时间】:2015-04-17 19:09:30
【问题描述】:

我有上面的 js 和 JSP 代码,我想在点击确认窗口 poopup 上的ok 按钮时调用procedureCall()(在“if”语句内)。 有可能吗?如果有,怎么做?

<script type="text/javascript">
        function confirmDelete() {
            var answer = confirm("Are you sure you want to delete");
            if (answer == true) {
                return true;
            } else {
                return false;
            }
        }
</script>

JSP 片断:

<%!    public void procedureCall(int cId) {
            String procedureCall = "{call NEW_PORTING_PRC.delete_album_metadata(cId)}";
                try (CallableStatement cal = conn.prepareCall(procedureCall);) {

                } catch (Exception e) {
                    e.printStackTrace();
                }
%>

【问题讨论】:

    标签: java javascript jsp


    【解决方案1】:

    javascript 在您的浏览器中运行,您的 java 代码部署在您的容器(Tomcat)中。 因此,调用它的唯一方法是通过 Web 调用。您的 javascript 应该调用对一个 servlet(在 web.xml 中配置)的 ajax 调用,并且该 servlet 应该调用您的 java 方法。 就像你写的 JS 一样

     $.get('URLofServlet');
    

    您可以尝试使用一些参数提交 JSP 并重新加载 JSP..

    if (answer == true) 
    {
       document.getElementById("param1").value='paramvalue';
       document.getElementById("myForm").action='yourJspPath.jsp';
       document.getElementById("myForm").submit();
    }
    

    另外,为了简单起见,我假设 id 和 name 都是“param1”。 在scriptlet中你可以这样做

    <%
        if(request.getParamter("param1")=='paramvalue'){procedureCall();}
    %>
    

    只是补充一下,我建议删除 scriplets 并像第一种方法一样使用 ajax。

    【讨论】:

      【解决方案2】:

      使用表单提交或 ajax 请求或框架操作返回并处理您所需的事情。我认为在您的方法中这是不可能的。 并且请不要在 jsp 中使用 scriplets,这不是一个好习惯。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-29
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        相关资源
        最近更新 更多