Вопрос

Я пытаюсь создать файл Excel и сохранить в локальной файловой системе с помощью java-апплета.После подписания приложения я могу успешно создать файл, непосредственно вызвав апплет.Однако, когда я пытаюсь вызвать метод из javascript, он завершается с ошибкой без какого-либо сообщения об ошибке.Мне интересно, есть ли какой-либо элемент управления политикой, запрещающий вызывать java-метод из javascript?

 <html>
<script language="JavaScript">
function createExcel()
{
    document.excel.createExcel();

    document.excel.setMessage("hello world from js");
}
</script>
<body>
<input type="button" value="Generate Excel" onclick="createExcel()" />
<applet id='applet' name='excel' archive='Office.jar,poi-3.7-20101029.jar' code='com.broadridge.Office.class' width='100' height='100'></applet>
</body>
</html>
Это было полезно?

Решение

Методы в доверенном апплете, которые вызываются с помощью JavaScript, должны быть обернуты в PrivilegedAction и вызывается с помощью одного из AccessController.doPrivileged(..) варианты.

Изолированный доступ к файловой системе

Подключаемые модули 2 JRE (например, Oracle 1.6.0_10 + JRE) предлагают изолированный доступ к локальной файловой системе с использованием JNLP API файловые сервисы (в частности, FileSaveService).Посмотрите на демо-версия файлового сервиса. для примера.

Элемент апплета

Апплет, вызываемый JS, должен объявлять, что это scriptable в HTML-формате.Что касается получения этого "HTML", лучший способ написать его - использовать Oracle deployJava.js.Это не только запишет элемент апплета наилучшим способом, который в настоящее время известен для каждого браузера, но и обеспечит наличие JRE (установлена ли Java?) и минимальная версия (является ли JRE минимальной версией, необходимой для запуска этого апплета?) проверка.

Другие советы

Здесь может быть несколько проблем.

1) Вы должны использовать метод развертывания JavaScript для апплета (см. ссылку).

2) Если метод, который вы пытаетесь вызвать, отсутствует в самом дочернем апплете, вам сначала нужно получить экземпляр рассматриваемого класса, а затем вызвать его метод, например(для класса "Калькулятор"):

родовое слово

Дополнительная информация

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top