Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.5k views
in Technique[技术] by (71.8m points)

jsp - How to use scriptlet inside javascript

Can someone test this example and share the results? http://timothypowell.net/blog/?p=23
When I do:

var myVar = '<% request.getContextPath(); %>';
alert(myVar);

I get : '<% request.getContextPath(); %>'.

Removing the enclosing single quotes from '<% request.getContextPath(); %>'; gives syntax error. How can I use the scrptlet or expresion inside a js function?

EDIT: this link has an explanation that helped me:
http://www.codingforums.com/showthread.php?t=172082

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

That line of code has to be placed in a HTML <script> tag in a .jsp file. This way the JspServlet will process the scriptlets (and other JSP/EL specific expressions).

<script>var myVar = '<%= request.getContextPath() %>';</script>

Note that <%= %> is the right syntax to print a variable, the <% %> doesn't do that.

Or if it is intended to be served in a standalone .js file, then you need to rename it to .jsp and add the following to top of the file (and change the <script src> URL accordingly):

<%@page contentType="text/javascript" %>
...
var myVar = '<%= request.getContextPath() %>';

This way the JspServlet will process it and the browser will be instructed to interpret the JSP response body as JavaScript instead of HTML.


Unrelated to the concrete problem, note that scriptlets are considered poor practice. Use EL.

var myVar = '${pageContext.request.contextPath}';

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...