我有一个非常奇怪的问题,在这里:
我有一个jsp页面,在这个jsp中,有一个iframe显示来自另一个jsp的一些内容。我希望在<body onload="blabla"..>
所以我试图做的是,我将静态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.print但不在方法内部。如何在refreshiframe()方法中使用out.print?还是有更好的方法来解决这个问题?谢谢。
答案 0 :(得分:4)
您正在尝试在生成的HTML中将JSP中声明的Java方法作为JavaScript方法执行。
那不行。
了解您的请求是如何处理的:
正如您所看到的,refreshiframe()
方法在解释onload
属性的时间(和地点)甚至存在(步骤#4)。
另外,关于编译错误:在JSP中定义一个新方法。该方法只能访问其参数,因此如果您希望它将某些内容输出到输出,则需要将out
作为参数传递给它。
答案 1 :(得分:4)
的确,你是使用JavaScript的confusing Java / JSP。
<body onload>
应该指向JavaScript函数,而不是Java / JSP方法。如果我理解你,你想刷新/重新加载iframe的内容吗?如果是这样,请将以下内容添加到HTML文档的<head>
。
<script>
function refreshiframe() {
document.getElementById('frameId').contentWindow.location.reload();
}
</script>
并将<iframe>
元素设为id="frameId"
。
<iframe id="frameId"></iframe>
答案 2 :(得分:0)
只需声明该方法以获取参数,然后将其作为refreshiframe(out)
调用。