Как использовать скриптлет внутри javascript

может кто-нибудь проверить этот пример и поделиться результатами? http://timothypowell.net/blog/?p=23
Когда я это делаю:

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

Я : '<% request.getContextPath(); %>'.

удаление вложенных одинарных кавычек из ' '; дает синтаксическую ошибку. Как я могу использовать scrptlet или expresion внутри функции js?

EDIT: эта ссылка имеет объяснение, которое помогло я ... :
http://www.codingforums.com/showthread.php?t=172082

4 ответов


похоже, что вы размещаете код JSP на странице JavaScript или, по крайней мере, на странице без JSP. Сценарии могут быть включены только в JSP странице (обычно настраивается на *.JSP-страница.)

представленный оператор, если он обрабатывается компилятором JSP, приведет к тому, что myVar будет равен " как формат скриптлета, который вы используете выполняет Java-код между тегами, но не возвращает результат.

Итак, чтобы использовать этот тег, вам нужно будет вручную записать значение в выходной поток запроса. Чтобы получить желаемую функциональность, вам нужно сделать следующее:

  make sure your code is in a JSP page
  use var myVar = '<%= request.getContextPath() %>'; (note the equals sign)

при этом сценарии рассматриваются как плохой практики в большинстве случаев. В большинстве случаев вы должны использовать выражения JSTL и пользовательские теги.


эта строка кода должна быть помещена в HTML <script> теги . Сюда JspServlet обработает скриптлеты (и другие специфические выражения JSP/EL).

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

отметим, что <%= %> является правильным синтаксисом для печати переменной,<% %> Не делай этого.

или если он предназначен для обслуживания в автономном .js файл, Затем вам нужно переименовать его в .jsp и добавьте следующее в верхнюю часть файла (и измените <script src> URL соответственно):

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

сюда JspServlet обработает его, и браузеру будет поручено интерпретировать тело ответа JSP как JavaScript вместо HTML.


не связано с конкретной проблемой, обратите внимание, что сценарии считается плохой практики. Используйте EL.

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

вы не можете запустить scriptlet внутри javascript давая ему нормально


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

вы забыли поставить = перед запросом и удалить ; после getContextPath ()