Путь к файлу на JSP и JavaScript

попытка поместить путь к файлу в JavaScript. это - боль \, символ ESC, и это всегда уничтожает символ после обратной косой черты

то, что я делаю, является этим, я пытаюсь добавить, что путь к файлу от jsp просматривает атрибут объекта

window.open("file"+<c:out value="${filePath}" />+fileName); 

но если существует обратная косая черта в конце filePath, это уничтожает следующую кавычку

каково самое эффективное обходное решение. я должен изменить нотацию атрибута Java (который я не хочу к), или заставьте сценарий делать это?

1
задан nokheat 24 June 2010 в 03:52
поделиться

3 ответа

Используйте / вместо \ . / также отлично работает в Windows. Вы можете использовать fn: replace () , чтобы заменить его.

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
window.open("file${fn:replace(filePath, '\\', '/')}" + fileName); 

Обратите внимание, что я также исправил «конкатенацию строк». Объединение c: out в стиле Javascript не имеет смысла.

1
ответ дан 2 September 2019 в 23:32
поделиться

JavaScript-кодировка здесь требуется по той причине, что тег c:out выполняет HTML-кодировку, по крайней мере, для некоторых метасимволов, но не JavaScript-кодировку. В данном случае требуется JavaScript-кодировка вывода, поскольку вывод тега c:out появляется в контексте JavaScript.

Примечание: Для этого можно использовать ESAPI, используя класс JavaScriptCodec. Это также защитит вас от XSS, если это возможно через переменную filePath.

1
ответ дан 2 September 2019 в 23:32
поделиться

кажется, я ищу вот это http://static.springsource.org/spring/docs/1.1.5/taglib/tag/MessageTag.html

я просто поставил

<spring:message text="${filePath}" javaScriptEscape="true"/>

есть атрибут javaScriptEscape escape, который позволяет мне получить строку в дружественной javascript форме. поэтому я подумал, что это простое решение

0
ответ дан 2 September 2019 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: