在jsp中通过java访问javascript

时间:2011-04-17 20:38:20

标签: java javascript jsp

我的代码目前看起来像这样

<%
    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函数?或者那是不可能的?

2 个答案:

答案 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)。