Как получить текущий рабочий каталог в GWT Java
Я использую Java 1.6 с GWT 2.4.
Я очень хорошо знаю, что мы можем получить текущий рабочий каталог в Java, используя следующий код:
System.getProperty("user.dir");
Но GWT не позволит мне использовать класс System на стороне клиента.
Итак, мой вопрос: есть ли способ получить текущий путь к рабочей директории в GWT?
4 ответа
- Вам нужно будет использовать вызов RPC или запрос RequestBuilder.
- Передайте параметр имя изображения на сервер
- В классе обслуживания на стороне сервера рассчитайте системный путь и верните обратно информацию о пути.
GWT компилируется в javascript и выполняется в браузере, обменивающемся данными с сервером через http, и, следовательно, не может выполнять Java-код на стороне сервера, например System.getProperty("user.dir");
,
Любое такое требование должно быть выполнено посредством асинхронного вызова к серверу.
Примечание. По-прежнему не имеет смысла отображать путь к файловой системе для пользователя, если вы не пишете системный обозреватель с веб-интерфейсом (может вызвать некоторые связанные с безопасностью запросы!!!)
System.getProperty("user.dir") хорошо работал для меня в GWT 2.6.1, как при локальном запуске, так и при развертывании в Google App Engine (где он возвратил, например, /base/data/home/apps/s~rhezivt28/1.379778380561169345).
Вы можете написать новую услугу (в вашем RemoteService/RemoteServiceImpl
) который в основном получит текущий рабочий каталог, используя System.getProperty("user.dir");
?
Это обходной путь, потому что GWT (клиентский) код не имеет замены javascript для java.lang.System
класс ИЛИ я думаю, что они не имеют преимуществ читать свойства системы (так как они запускаются в браузере)
Current Directory in GWT.
все ваши сценарии Java на стороне клиента, так что, не имеет значения current directory
,
System.getProperty("user.dir");
По соображениям безопасности javascript
не имеет доступа к системным дискам, чтобы избежать кибератак
http://en.wikipedia.org/wiki/JavaScript
см. Открытие файла в локальной файловой системе в JavaScript
Чтобы получить файл, вам нужно сделать вызов на сервер.