I try to do something like that
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>"); %>
and use it like that
<body><input type="button" value="abcd" onclick="myfunction();"/></body>
That is generate javascript within my jsp Pages.And it works fine but only in chrome and not in IE.I then tried this 2.
<head><%StringBuffer dynamicJavaScript = new StringBuffer();dynamicJavaScript.append("\n<script type=\"text/javascript\">");dynamicJavaScript.append("\n</script>");%></head>
and use it like that again inside the tag
<%=dynamicJavaScript%>
In a weird way only if i include both of these solutions (1. & 2.) it works in IE.
Have yoy got any ideas?
Thank you
This is syntactically invalid in two ways: 1)
myis wrong here. 2)functionis a reserved keyword.With regard to generating Javascript code dynamically, I strongly recommend you to not use scriptlets for this, but just taglibs/EL. Your first line can be perfectly replaced with help of JSTL (just drop jstl-1.2.jar in
/WEB-INF/lib)c:forEach:Much better readable, isn’t it?
Update as per the comments, you can also iterate over a
Collectionwithc:forEach. Replace the particular piece by:..where
${bean}is your bean which is been placed in any of thepage,request,sessionorapplicationscopes and${bean.vector}requires having a getter with that name in theBeanclass likeTo learn more about JSTL, consult Sun Java EE tutorial part II chapter 7. To learn more about EL, consult Java EE tutorial part II chapter 5.
That said, the
Vectoris considered legacy and you should be using the improvedArrayListinstead which has already replaced it over a decade ago (more about Collections framework in this Sun tutorial). In this line, I would also recommend to throw all those >10 year old tutorials/books away and go read the more recent ones.