从JSP Servlet向前调用Javascript函数

Call a Javascript function from a JSP Servlet forward

本文关键字:调用 Javascript 函数 JSP Servlet      更新时间:2023-09-26

我今天要做的是从JSP Servlet响应中直接调用Javascript函数。这是什么意思?下面是代码:

Servlet,包含在myServlet.java

// Takes an XML already previously parsed as a string as input
CharSequence confirm= "something";
    if (xml.contains(confirm)) {
            // Carry on
            // If it is contained we needn't go further
    } else {
        // "couldn't find confirms content
        errorMessage = "Does not contain confirm";
        // "If ^ quit this servlet"
        request.setAttribute("rol", this.rol);
        request.setAttribute("user", this.user);
        request.setAttribute("errorMessage", errorMessage);
        forwardToJSP(request, response, "/myJSP.jsp");
    }

现在在Javascript中,我已经定义了一个我想要调用的函数。它是这样的:

Javascript,包含在myJSP.jsp

<script language="JavaScript" type="text/JavaScript">
    // Assume all document.getElementById calls are properly implemented,
    //   they call real variables that exist elsewhere, but not shown 
    //   here due to irrelevance.
    window.errorExists = function() {
        var errorExists = document.getElementById("terror");
        errorExists.setAtribute("terror", "Does not contain confirm");
        if (errorExists.attributes == "Does not contain confirm"){
           if(confirm("Cannot find content, do you wish to add it?")){
               anotherFunctionCall();
           } else {
               // Don't do anything
           }
    }
}
</script>

现在,简单地说,我要做的是从前面提到的JSP调用Javascript函数。我认为不能这样做周围的工作,如:

PrintWriter out = response.getWriter();
out.println("<tr><td><input type='button' name='Button' value='Search' onclick='"searchRecord('"+ argument + "');'"></td></tr>");

因为另一个函数不会被调用,也有一个Javascript变量的更新。

如何绕过这个?

可以在JSP页面主体的onload参数中调用该方法。

由于您已经在使用Forward方法调用JSP页面,因此当您调用JSP页面时,JSP页面正在被加载。您可以在JSP页面的body标签中调用您的方法,如下所示:

<body onload="YourMehodName()">

或者,您可以将此脚本放在JSP的底部,它将在加载页面时被调用。