Передать значение JSP во внешний файл Javascript

есть ли способ передать значение переменной JSP во внешний файл Javascript, используя только Javascript и JSP. Что-то вроде:

JSP

String str = "Hello";

внешний.Яш

//not working
var str = "<%=str%>";

спасибо.

4 ответов


Если вы думаете, что сценарий java написан внутри JSP, то это возможно.

но вы предоставляете файл JS отдельно, то вы можете сделать глобальную переменную и эта переменная будет доступна везде.


вы не сможете записать во внешний файл js. Однако, если вы ставите var s = "<%=str%>";в вашем jsp s станет глобальной переменной, которая может использоваться в вашем внешнем js-файле, потому что s будет иметь глобальную область. Короче говоря, вы не можете изменить фактический JS-файл, но вы можете добавить переменную с глобальной областью и ссылаться на эту переменную в вашем внешнем JS-скрипте.


вы можете просто создать jsp, содержащий JS-код с" динамическим материалом", напечатанным внутри, а затем импортировать этот jsp как обычный JS-файл. Я покажу вам свою собственную реализацию для сайта, над которым я работаю (он использует распорки). Я использую этот подход для экспорта на клиентскую сторону карты, содержащей несколько локализованных строк:

фу.jsp:

<%@ page contentType="text/javascript" pageEncoding="UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>

var myString = '<s:text name="foo.MY_STRING" />'

распорки.XML-код:

<action name="foo"><result>foo.jsp</result></action>

дома.jsp:

<script type="text/javascript" src="foo.action" charset="UTF-8"></script>

определите строку перед включением файла JavaScript в файл JSP.

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

в вашем файле JavaScript вы можете напрямую ссылаться на переменную.

например

alert(str)