Неопределенный строковый литерал из getServletContext (). GetRealPath ("/") в JSP - PullRequest
0 голосов
/ 16 марта 2011

Это ошибка, которая возникла после того, как я получил ответ на предыдущий вопрос.По сути, я пытаюсь взять с собой absPath папки, чтобы я мог создавать некоторые файлы во время выполнения независимо от того, где находится мой код.Мне было рекомендовано использовать

getServletContext().getRealPath("/");

, чтобы найти правильный путь.

Я пробовал его на своей странице JSP, но я получаю неопределенный строковый литерал прямо при создании переменной absPath.Вот скрипт, который я пытаюсь запустить.

<script type="text/javascript">
        var RemoteUserId = "<%=(request.getRemoteUser()==null)? "blah" : request.getRemoteUser()%>";
        var contextPath = "<%= request.getContextPath()%>";         
        var extPath = "<%=extPath%>";
        var absPath = "<%=getServletContext().getRealPath("/")%>";
        var env='<%=string1%>';
</script>

Что мне не хватает?Нужно ли мне возвращать возвращенное имя пути, или я неверно истолковал, когда должен был это использовать.

Редактировать ** Это то, что источник показывает при доступе к странице
(слегка подправленный, поэтому я 'я не показываю мой полный путь C:)

<script type="text/javascript">
        var RemoteUserId = "blah";
        var contextPath = "/TRACK";         
        var extPath = "http://xxx/sales/it/tlp/ext-3.2.1";
        var env='null';
        var absPath = "C:\Documents and Settings...\TRACK\";
</script>

1 Ответ

0 голосов
/ 16 марта 2011

Как и в Java, обратные слэши - это escape-символы в JS.Вы должны избежать их, чтобы представлять буквальную обратную косую черту.Другими словами, ваша absPath переменная должна заканчиваться как

var absPath = "C:\\Documents and Settings...\\TRACK\\";

Вы можете сделать это с помощью

var absPath = "<%=getServletContext().getRealPath("/").replace("\\", "\\\\")%>";

Но все же, мне нет смысла передаватьПеременная Java обратно в Java через JavaScript.Просто получите доступ к нему на стороне Java, когда код собирается обработать запрос.Представьте, что вы используете сервлет для обработки запроса, просто сделайте

String absPath = getServletContext().getRealPath("/");

вместо

String absPath = request.getParameter("absPath");

(или что бы вы ни делали, чтобы вернуть absPath обратноВаш код Java)

Также обратите внимание, что весь код JavaScript полностью контролируется / может быть подделан / взломан клиентом.Клиент может редактировать переменные JavaScript во время выполнения кода.Клиент может, например, изменить путь до того, как он будет использован.Имейте это в виду!

...