在IE中用JSP动态生成Javascript

在IE中用JSP动态生成Javascript,javascript,internet-explorer,jsp,Javascript,Internet Explorer,Jsp,我试着做那样的事 1. <head><% out.println("<script type=\"text/javascript\">"); out.println("function myfunction(){"); out.println("for(int i=0;i<10;i++){"); out.println("alert(message+i);"); out.println("}}"); out.println("</script>&l

我试着做那样的事 1.

<head><% out.println("<script type=\"text/javascript\">"); out.println("function myfunction(){"); out.println("for(int i=0;i<10;i++){"); out.println("alert(message+i);"); out.println("}}"); out.println("</script></head>"); %>

像那样使用它

<body><input type="button" value="abcd" onclick="myfunction();"/></body>

这就是在我的jsp页面中生成javascript。它可以很好地工作,但只在chrome中工作,在IE中不工作。然后我尝试了这个2。

<head><%StringBuffer dynamicJavaScript = new StringBuffer();dynamicJavaScript.append("\n<script type=\"text/javascript\">");dynamicJavaScript.append("\n</script>");%></head>

在标签里再这样用一次

<%=dynamicJavaScript%>

以一种奇怪的方式,只有当我将这两种解决方案都包括在内时,它才能在IE中工作。 你有什么想法吗? 多谢各位

这在两个方面在语法上是无效的:1)
my
在这里是错误的。2)
function
是一个保留关键字

关于动态生成Javascript代码,我强烈建议您不要使用scriptlets,而只使用taglibs/EL。您的第一行可以在以下帮助下完全替换(只需访问
/WEB-INF/lib
):

…其中,
${bean}
是放置在
页面
请求
会话
应用程序
作用域和
${bean.vector}
中的bean,需要在
bean
类中具有该名称的getter,如

public class Bean {
    public Vector<String> getVector() {
        return this.vector;
    }
}
公共类Bean{
公共向量getVector(){
返回这个.vector;
}
}
要了解更多关于JSTL的信息,请咨询Sun。要了解更多关于EL的信息,请咨询


这就是说,
Vector
被认为是遗留的,您应该改用改进的,它在十多年前就已经取代了它(更多关于集合框架的信息)。在这方面,,我还建议扔掉那些超过10年的教程/书籍,去读最近的。

我必须说我对EL不太在行。我想先从一个bean中获取一个向量,然后生成一个带有for循环的javascript,该循环显示向量的元素。问题是我不知道如何使用EL获取向量。比如那个Vector myVector=mybean.getMyVector();对于(inti=1;i<head> <script type="text/javascript"> function myFunction() { // <c:forEach begin="0" end="10" var="i"> alert(message${i}); // </c:forEach> } </script> </head>
            <c:forEach items="${bean.vector}" var="item">
                alert('${item}');
            </c:forEach>
public class Bean {
    public Vector<String> getVector() {
        return this.vector;
    }
}