Опитвам се да поставя всички мои Java методи достъпни от javascript скрипт.
Тъй като искам "преки пътища", последвах следното ръководство: https://stackoverflow.com/a/19197130/2897090 . Но когато моят метод на Java има променливи аргументи, не мога да „изложа“ метода за използване с езика на javascript.
public void printf(String format, Object... args) {
out.printf(format, args);
}
//Gives org.mozilla.javascript.EvaluatorException: Unsupported parameter type "[Ljava.lang.Object;" in method printf
Друго нещо:
Ако се опитам да направя "пряк път към printf
, използвайки само "javascript":
function printf(format){
java.lang.System.out.printf(format, arguments);
}
Ако напиша нещо, получавам org.mozilla.javascript.Arguments@NNNNNN
. Как да поправя това?
Благодаря ти.
Актуализация
Тъй като не намерих никакво решение, промених подхода: сега използвам само ScriptEngine. Практически това, което правя, е да изложа целия обект (не само функции). За съжаление всеки път, когато трябва да извикам функция, трябва да поставя префикс с името на обекта, който съм изложил.
Както и да е, с това бих могъл да създам своите Java методи с променливи аргументи и да ги използвам без никакви модификации от страна на JavaScript.