从JSP Servlet向前调用Javascript函数

时间:2014-05-21 09:11:22

标签: java javascript jquery jsp servlets

我今天要做的是直接从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变量也有更新。

怎么会绕过这个?

非常感谢任何和所有帮助。

1 个答案:

答案 0 :(得分:1)

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

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

<body onload="YourMehodName()">

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