user200340
user200340

Reputation: 3371

Pass JSP value to external Javascript file

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.

Upvotes: 11

Views: 14650

Answers (4)

Yilei
Yilei

Reputation: 269

Define the string before you include the JavaScript file in your JSP file.

<script type="text/javascript">
    var str = "Hello";
</script>
<script src="js/myJavascript.js"></script>

In your JavaScript file, you can directly refer to the variable.

e.g.

alert(str) 

Upvotes: 1

daveoncode
daveoncode

Reputation: 19618

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>

Upvotes: 1

Talha Ahmed Khan
Talha Ahmed Khan

Reputation: 15483

If you think that the java script is written inside the JSP then its possible.

But you are providing the JS file separately then you can make a global variable and that variable will be available everywhere.

Upvotes: 9

Kevin Bowersox
Kevin Bowersox

Reputation: 94499

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.

Upvotes: 4

Related Questions