Rhino: как вернуть строку из Java в Javascript?
как использовать Rhino возвращает строку из Java в Javascript, все, что я получаю, это org.mozilla.javascript.JavaNativeObject
когда я использую
var jsString = new java.lang.String("test");
в моем JS файл.
это правильный способ сделать это?
var jsString = String(new java.lang.String("test"));
цель состоит в том, чтобы иметь метод Java для возврата объекта String вместо создания его на лету, как указано выше.
3 ответов
В общем, вы бы назвали Context.javaToJS
который преобразует объект Java в его ближайшее представление в Javascript. Однако для String
objects, эта функция возвращает саму строку без необходимости ее обертывания. Поэтому, если вы всегда возвращаете строку, вам не нужно делать ничего особенного.
оба будут работать, но сначала попробуйте или пройдите через rhino tutorials https://developer.mozilla.org/en/Rhino_documentation
хотя в большинстве случаев возвращаемый тип строки Java может использоваться так же, как тип строки JS в коде JS, он не имеет тех же методов!
в частности, я обнаружил, что его нельзя использовать в объекте JS, переданном в 'stringify ()', поскольку у него нет метода toJSON ().
единственное решение, которое я нашел, - это явно сделать добавление "" в JS, чтобы преобразовать строку Java в строку JS. Я не нашел способа кодировать метод java для возврата хорошего JS строка напрямую... (как контекст.javaToJS() не преобразует строку Java) Например:
var jstr = MyJavaObj.methodReturningAString();
JSON.stringify({ "toto":jstr}); // Fails
JSON.stringify({ "toto": ""+jstr}); // OK