8

I have a servlet which has a variable which holds a JSON string.

JSONObject obj = new JSONObject();
obj.put("parameter", jsonList);
request.setAttribute("jsonstring", obj.toString());
RequestDispatcher rd = request.getRequestDispatcher("/file.jsp");
rd.forward(request, response);

Now I am forwarding my request and response objects to a JSP page which contains a JS file. How can I access the value of jsonstring variable inside the JS file.As I need to parse my JSON string further using jQuery.

I tried doing this in my JS file as I saw in some of the posts online.But it seems like its not working for me.

var test = '<%=request.getAttribute("jsonstring")%>'

Kindly guide me on the same.Thanx.

4 Answers 4

7

If the JSP file uses a <script> tag to load an external JavaScript file, something like this:

<script type="text/javascript" src="js/yourFile.js"></script>

then it won't work. What you have is a JSP scriptlet which only means something during the execution of the JSP file. That yourFile.js file won't be parsed server-side because it doesn't need to be. Only the browser will know what to do with the <script> tag and issue a request to the server to load the JavaScript.

In these cases what you can do is something like this inside your JSP:

<script type="text/javascript">
    var test = <%=request.getAttribute("jsonstring")%>;
</script>
<script type="text/javascript" src="js/yourFile.js"/></script>

Since the JSP scriptlet is inside your JSP file it now actually gets processed correctly, and instead outputs the valid JSON for the object/array to store in the globally scoped test variable, which you can then refer to inside yourFile.js.

Sign up to request clarification or add additional context in comments.

3 Comments

You're right, i have missed that he try to do that in a JS file :)
I'd suggest avoid using scriptlets. Use ${jsonstring} rather
@Anthony..I was trying the same with external JS file from hours.Its working now.And thanks for such a nice explanation.:)
1

Try this :

var test = <%=request.getAttribute("jsonstring")%>;

Else try that :

var test = eval('<%=request.getAttribute("jsonstring")%>');

2 Comments

can you provide the error? And can you provide the value of <%=request.getAttribute("jsonstring")%>?
Uncaught SyntaxError: Unexpected token <
1

The solution for me was the following:

<script type="text/javascript">
    var value =<%=request.getAttribute("indicadorId") %>;
</script>

Comments

0

put object direct in the request like this

request.setAttribute("jsonstring", obj);

then assign request obj to js variable, it will be accessable as json object;

var test = <%=request.getAttribute("jsonstring")%>;
... = test.parameter;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.