我今天要做的是直接从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变量也有更新。
怎么会绕过这个?
非常感谢任何和所有帮助。
答案 0 :(得分:1)
您可以在JSP页面主体的onload
参数中调用该方法。
由于您已使用Forward方法调用JSP页面,因此在调用JSP页面时会加载JSP页面。您可以在JSP页面的body标签中调用您的方法,如下所示:
<body onload="YourMehodName()">
或者,您可以将此脚本放在JSP的底部,这将在加载页面时被调用。