Могу ли я поместить JSP конкретный код во внешний файл сценария
Я хотел бы получить значения, отправленные Servlet
с использованием HttpSession
во внешнем js-файле, используя requirejs ' define
функция:
define(function(){
return {
/*Get values from the java session*/
gisuniqkey:<%=session.getAttribute('gisuniqkey')%>,
scenario:<%=session.getAttribute('scenario')%>,
operation:<%=session.getAttribute('operation')%>,
objkey:<%=session.getAttribute('objkey')%>
}
});
Можно ли сделать это? Какие-нибудь зависимости, которые я должен включить, делая это? Затмение говорит мне, что при этом возникает ошибка.
Сообщение об ошибке просто называет это синтаксической ошибкой:
Uncaught SyntaxError: Unexpected token < java_to_script.js:3
Uncaught TypeError: Cannot read property 'gisuniqkey' of undefined
gmaps_createScenario.js:15
Все, что меня волнует, это то, что я не использую глобальную переменную внутри моего jsp... и что она должна хорошо работать с require.js, было бы замечательно, если бы ее можно было сделать модулем многократного использования.
1 ответ
Вы не можете использовать JSP в статическом .js
файл.
Вы можете использовать JSP в .jsp
файл, который выводит файл JavaScript.
Вывести application/javascript
тип контента, а затем напишите свой JS как обычно в .jsp
файл, используя директивы JSP, вы хотите.
Обратите внимание, что, поскольку файл JavaScript будет запрашиваться отдельно от файла HTML, вы не сможете читать такие вещи, как строка запроса, используемая для запроса файла HTML, из директив JSP в файле JavaScript (хотя вы можете передать их через сеанс или добавить их в src
из <script>
элемент).
Однако, как правило, лучше придерживаться статических файлов JS и включать динамически сгенерированные JS как встроенные <script>
в HTML-документе (хотя сведение такого JS к минимуму - достаточно для хранения необходимых вам данных). Это упрощает сортировку правил кэширования.