Я работаю над вспомогательным апплетом для управления передачей больших файлов. В настоящее время у нас есть апплет, который управляет полной транзакцией: от выбора папки, содержащей файлы, их передачи и отчетов об успехе и неудаче операции, но он очень неудовлетворителен по ряду причин. Так что теперь мы просто хотим очень тонкой помощи от апплетов, чтобы пользователь мог найти папку на своей локальной машине и управлять передачей. Мы хотели бы как можно больше обратной связи и взаимодействия с пользователем, чтобы использовать веб-элементы управления. Как вы можете себе представить, это требует довольно широкого использования моста между апплетами и Javascript в браузере.
По большей части это довольно просто, но я обнаружил странный крайний случай. У меня есть метод, который открывает диалоговое окно JFileChooser и просматривает содержимое этой папки и сообщает об этом. У меня это работает, когда я создаю JButton в методе start () и использую его для вызова JFileChooser. Но я поместил весь код JFileChooser в метод с именем showFolderSelect (), чтобы я мог также попытаться открыть JFileChooser из Javascript. Так что этот вызов из апплета работает:
public void actionPerformed(ActionEvent event) {
if ("browse".equals(event.getActionCommand())) {
showFolderSelect();
}
}
Но этот вызов из Javascript не:
function selectFolder() {
var infoApplet = document.getElementById('infoApplet');
infoApplet.showFolderSelect();
}
При вызове Javascript в консоли Opera появляется следующее сообщение:
[5 October, 2003 6:26:56 AM] JavaScript - http://localhost:8080/applet-webapp/
Event thread: click
Uncaught exception: Error: java.security.AccessControlException: access denied (java.util.PropertyPermission user.home read)
Error thrown at line 20, column 12 in selectFolder() in http://localhost:8080/applet-webapp/:
infoApplet.showFolderSelect();
called from line 1, column 0 in <anonymous function>(event) in http://localhost:8080/applet-webapp/:
selectFolder();
Любые идеи о том, как я могу заставить это работать из Javascript? Или мне просто нужно использовать JButton, созданный в методе start () апплета?
Пожалуйста, обратите внимание, что я не могу ожидать, что пользователи смогут обходиться с конфигурациями java.policy или чем-то подобным. Единственный намек на безопасность и контроль доступа, который мы можем ожидать - это то, что апплет (ы) имеет цифровую подпись.
Спасибо за любую помощь или понимание по этому вопросу.