我的代码目前看起来像这样
<%
if (request != null) {
bustOut;
}
%>
<script language="javascript">
function bustOut(){
var newWin = window.open("the real url", "subWindow","height=500,width=700,resizable=yes,scrollbars=yes");
}
</script>
如何调用Java代码中的javascript函数?或者那是不可能的?
答案 0 :(得分:5)
JSP在webserver上运行,并在webbrowser请求时生成/生成HTML / CSS / JS代码。 Web服务器将HTML / CSS / JS发送到webbrowser。 Webbrowser运行HTML / CSS / JS。所以,你只需要让JSP打印成字面为JS代码。
<script language="javascript">
function bustOut(){
var newWin = window.open("the real url", "subWindow","height=500,width=700,resizable=yes,scrollbars=yes");
}
<%
if (foo != null) {
out.print("bustOut();");
}
%>
</script>
或,better,EL
<script language="javascript">
function bustOut(){
var newWin = window.open("the real url", "subWindow","height=500,width=700,resizable=yes,scrollbars=yes");
}
${not empty foo ? 'bustOut();' : ''}
</script>
(请注意,我将属性名称更改为foo
,因为request
代表HttpServletRequest
,这可能会让其他人感到困惑,因为它永远不会null
)
无论哪种方式,生成的HTML(您应该通过在浏览器中打开页面,右键单击并选择查看源来查看)在条件为真时应如下所示:
<script language="javascript">
function bustOut(){
var newWin = window.open("the real url", "subWindow","height=500,width=700,resizable=yes,scrollbars=yes");
}
bustOut();
</script>
它现在打开你头顶的灯泡吗?
答案 1 :(得分:0)
你不能从java调用javascript函数
您的java代码在服务器上执行,javascript - 在客户端上执行。
您似乎需要有条件地打开文档加载的新窗口。为此:
<c:if test="${shouldDisplayWindow}">
$(document).ready(function() {
bustOut();
});
</c:if>
(这是用于检测文档加载的jQuery。您可以使用纯javascript替换它 - window.onload = function() {..}
或document.onload = function() {..}
我认为)
请注意request != null
是没有意义的条件 - JSP中的请求永远不会是null
。
最后 - 使用jstl标签(就像我展示的那样)而不是java代码(scriptlets)。