попытка поместить путь к файлу в JavaScript. это - боль \, символ ESC, и это всегда уничтожает символ после обратной косой черты
то, что я делаю, является этим, я пытаюсь добавить, что путь к файлу от jsp просматривает атрибут объекта
window.open("file"+<c:out value="${filePath}" />+fileName);
но если существует обратная косая черта в конце filePath, это уничтожает следующую кавычку
каково самое эффективное обходное решение. я должен изменить нотацию атрибута Java (который я не хочу к), или заставьте сценарий делать это?
Используйте /
вместо \
. /
также отлично работает в Windows. Вы можете использовать fn: replace ()
, чтобы заменить его.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
window.open("file${fn:replace(filePath, '\\', '/')}" + fileName);
Обратите внимание, что я также исправил «конкатенацию строк». Объединение c: out
в стиле Javascript не имеет смысла.
JavaScript-кодировка здесь требуется по той причине, что тег c:out выполняет HTML-кодировку, по крайней мере, для некоторых метасимволов, но не JavaScript-кодировку. В данном случае требуется JavaScript-кодировка вывода, поскольку вывод тега c:out появляется в контексте JavaScript.
Примечание: Для этого можно использовать ESAPI, используя класс JavaScriptCodec. Это также защитит вас от XSS, если это возможно через переменную filePath.
кажется, я ищу вот это http://static.springsource.org/spring/docs/1.1.5/taglib/tag/MessageTag.html
я просто поставил
<spring:message text="${filePath}" javaScriptEscape="true"/>
есть атрибут javaScriptEscape escape, который позволяет мне получить строку в дружественной javascript форме. поэтому я подумал, что это простое решение