대용량 파일의 전송을 관리하기 위해 도우미 애플릿에서 작업하고 있습니다. 우리는 현재 파일이 들어있는 폴더를 선택하고 파일을 전송하고 작업의 성공과 실패를보고하는 등 전체 트랜잭션을 관리하는 애플릿을 가지고 있지만 여러 가지면에서 매우 불만족 스럽습니다. 이제는 애플릿에서 사용자가 로컬 컴퓨터의 폴더를 찾고 전송을 관리 할 수 있도록 아주 미묘한 지원을 원합니다. 웹 기반 컨트롤을 사용하기 위해 가능한 한 피드백과 사용자 상호 작용을 원합니다. 따라서 브라우저에서 애플릿과 자바 스크립트 사이의 다리를 상당히 광범위하게 사용해야한다는 것을 상상할 수 있습니다.JS를 통해 호출 할 때 JFileChooser가 AccessControlException을 발생 시키므로 애플릿을 통해 호출 될 때 작동합니다.
이것은 대부분 간단하지만 이상한 가장자리 케이스를 발견했습니다. JFileChooser 대화 상자를 팝업하고 그 폴더의 내용을보고 다시보고하는 메서드가 있습니다. start() 메서드에서 JButton을 만들고 JFileChooser 팝업을 사용하여이 작업을 수행했습니다. 하지만 JFileChooser에 대한 모든 코드를 showFolderSelect()라는 메서드에 넣었으므로 Javile에서 JFileChooser를 열어 볼 수도 있습니다.
public void actionPerformed(ActionEvent event) {
if ("browse".equals(event.getActionCommand())) {
showFolderSelect();
}
}
을하지만 자바 스크립트에서이 호출하지 않습니다 : 그래서 애플릿 내에서이 호출은 작동
[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();
:
function selectFolder() {
var infoApplet = document.getElementById('infoApplet');
infoApplet.showFolderSelect();
}
자바 스크립트 호출이 나에게 오페라의 콘솔에서 다음과 같은 메시지를 가져옵니다 이걸 자바 스크립트에서 어떻게 작동시킬 수 있을지에 대한 아이디어가 있습니까? 아니면 애플릿의 start() 메소드에서 생성 된 JButton을 사용해야할까요?
사용자가 java.policy 구성 또는 이와 유사한 것으로 원숭이처럼 행동 할 것으로 기대할 수는 없습니다. 우리가 기대할 수있는 보안 및 액세스 제어에 대한 유일한 고지는 애플릿 (들)이 디지털 서명되었음을 나타냅니다.
이 문제에 대한 도움이나 의견을 보내 주셔서 감사합니다.
[이 답변보기] (http://stackoverflow.com/a/7842706/418556). 'AccessController' /'doPrivileged()'. –