Je travaille sur une applet d'aide pour gérer les transferts de fichiers volumineux. Nous avons actuellement une applet qui gère la transaction complète, en sélectionnant le dossier contenant les fichiers, en les transférant et en rendant compte du succès et de l'échec de l'opération, mais c'est très insatisfaisant à plusieurs égards. Alors maintenant, nous voulons juste une aide très subtile des applets pour permettre à l'utilisateur de trouver un dossier sur leur machine locale et de gérer le transfert. Nous aimerions autant que possible de la rétroaction et de l'interaction de l'utilisateur pour utiliser les contrôles Web. Donc, comme vous pouvez l'imaginer, cela nécessite une utilisation assez étendue du pont entre les applets et Javascript dans le navigateur. Pour la plupart, c'est assez simple, mais j'ai trouvé un cas de bord bizarre. J'ai une méthode qui ouvre une boîte de dialogue JFileChooser et regarde le contenu de ce dossier et le rapporte. J'ai ceci fonctionnant quand je crée un JButton dans la méthode start() et l'utilise pour faire apparaître le JFileChooser. Mais j'ai mis tout le code pour JFileChooser dans une méthode appelée showFolderSelect() afin que je puisse aussi essayer d'ouvrir le JFileChooser à partir de Javascript. Donc, cet appel à partir de l'applet fonctionne:JFileChooser provoque AccessControlException lorsqu'il est appelé par JS, fonctionne lorsqu'il est appelé par l'intermédiaire de l'applet
public void actionPerformed(ActionEvent event) {
if ("browse".equals(event.getActionCommand())) {
showFolderSelect();
}
}
Mais cet appel de Javascript ne fait pas:
function selectFolder() {
var infoApplet = document.getElementById('infoApplet');
infoApplet.showFolderSelect();
}
L'appel Javascript me reçoit le message suivant dans la console 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();
Des idées sur la façon dont je peux obtenir ce travail à partir de Javascript? Ou est-ce que je vais juste devoir utiliser le JButton créé dans la méthode start() de l'applet?
Veuillez noter que je ne peux pas m'attendre à ce que les utilisateurs puissent se déplacer avec des configurations java.policy ou quelque chose comme ça. Le seul signe de la sécurité et du contrôle d'accès que nous pouvons nous attendre est que l'applet (s) est (sont) signé numériquement.
Merci pour toute aide ou aperçu sur ce problème.
Voir [cette réponse] (http://stackoverflow.com/a/7842706/418556) re. 'AccessController' /' doPrivileged() '. –