Is there a way that I can pass a JSP variable value to an external Javascript file by using only Javascript and JSP. Something like:
JSP
String str = "Hello";
external.js
//not working var str = "<%=str%>";
Thanks.
Your not going to be able to write to the external js file. However if you put var s = "<%=str%>";in your jsp s will become a global variable which can be used within your external js file because s will have a global scope. So in a nutshell, you can't modify the actual js file, but you can add a variable with global scope and reference that variable within your external js script.
You can just create a jsp containing js code with "dynamic stuff" printed inside and then import that jsp as a normal js file. I'm gonna show you my own implementation, for the site where I'm working on (it makes use of struts). I'm using this approach to export to the client side a map containing several localized strings:
foo.jsp:
<%@ page contentType="text/javascript" pageEncoding="UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
var myString = '<s:text name="foo.MY_STRING" />'
struts.xml:
<action name="foo"><result>foo.jsp</result></action>
home.jsp:
<script type="text/javascript" src="foo.action" charset="UTF-8"></script>