【问题标题】:out.print not working in java method in jspout.print 在 jsp 中的 java 方法中不起作用
【发布时间】:2011-02-08 12:25:00
【问题描述】:

我有一个很奇怪的问题,就这样吧:

我有一个 jsp 页面,在这个 jsp 中,有一个 iframe 显示来自另一个 jsp 的一些内容。我希望在<body onload="blabla"..>

中刷新此 iframe

所以我尝试做的是,我将静态 HTML iframe 代码转换为方法中的 java 代码。所以它是这样的:

。 . html 这里 ...

<iframe ... blabla>
</iframe

html 这里.. . .

我是这样做的:

<body onload="refreshiframe();">

。 . html 这里 ...

<%! void refreshiframe()
{
out.print("<iframe.. blabla> </iframe>");
}
%>

html 这里 ... . .

但问题是,refreshiframe 中的 out.print 给出了编译错误。我的编译器 jdeveloper 10g 明确表示“未找到变量 'out'”。我可以在方法之外使用 out.print ,但不能在方法内部使用。如何在 refreshiframe() 方法中使用 out.print ?还是有更好的方法来解决这个问题?谢谢你。

【问题讨论】:

    标签: java html jsp printing methods


    【解决方案1】:

    确实,您是 confusing Java/JSP with JavaScript。

    &lt;body onload&gt; 应该指向 JavaScript 函数,而不是 Java/JSP 方法。如果我理解正确,您想刷新/重新加载 iframe 的内容吗?如果是这样,请将以下内容添加到 HTML 文档的 &lt;head&gt;

    <script>
        function refreshiframe() {
            document.getElementById('frameId').contentWindow.location.reload();
        }
    </script>
    

    给你的&lt;iframe&gt;元素一个id="frameId"

    <iframe id="frameId"></iframe>
    

    【讨论】:

    • 非常感谢,这正是我正在寻找的答案。
    【解决方案2】:

    您正试图在生成的 HTML 中执行在 JSP 中声明为 JavaScript 方法的 Java 方法。

    那行不通。

    看看你的请求是如何处理的:

    1. 客户端(浏览器)向服务器发送 HTTP 请求
    2. 服务器通过执行 JSP(即您的 Java 代码)来处理该请求
    3. JSP 的结果(一些 HTML 代码)被发送到客户端
    4. 客户端显示生成的 HTML,可能在其中执行 JavaScript 代码

    如您所见,您的 refreshiframe() 方法甚至在解释 onload 属性的时间(和地点)都不存在(第 4 步)。

    另外,关于编译错误:您在 JSP 中定义了一个新方法。该方法只能访问其参数,因此如果您希望它在输出中打印某些内容,则需要将 out 作为参数传递给它。

    【讨论】:

      【解决方案3】:

      只需声明该方法以获取参数,然后将其调用为refreshiframe(out)

      编辑:我完全错过了您将此方法称为 JavaScript 事件处理程序。 (请参阅 Joachim 的回答以获得很好的解释)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        • 1970-01-01
        • 2012-03-22
        • 2011-01-22
        • 1970-01-01
        相关资源
        最近更新 更多