Как использовать переменные Java varargs с собственным интерфейсом GWT Javascript? (Он же «GWT не имеет printf ()»)

Я пытаюсь быстро изучить GWT в рамках нового проекта. Я обнаружил, что GWT не реализует функцию Java String.format (), поэтому здесь нет функций, подобных printf (). Я знал, что для Javascript существуют некоторые реализации printf (), поэтому решил, что могу вставить одну из них в качестве функции собственного интерфейса GWT Javascript. Я столкнулся с проблемами и решил, что мне лучше убедиться, что значения varargs передаются правильно. Вот где все стало ужасно. Во-первых, некоторый пример кода:

// From Java, call the JSNI function:
test("sourceString", "params1", "params2", "params3");

....

public static native void test(Object... params) /*-{   
    // PROBLEM: this kills GWT!
    // alert(params.length);  

    // returns "function"
    alert(typeof(params));      

    // returns "[Ljava.lang.Object;@b97ff1"
    alert(params);
}-*/;

Документы GWT заявляют, что " без реальной информации. Когда я делаю «typeof (params)», он возвращает «function». Как будто это было недостаточно странно, если я проверю строковое значение params, оно вернет то, что кажется строковой версией ссылки на Java.

Итак, я предполагаю, что задаю здесь несколько разных вопросов:

1) Как на самом деле работают переменные GWT / JSNI, и нужно ли мне делать что-то особенное для передачи значений?
без реальной информации. Когда я делаю «typeof (params)», он возвращает «function». Как будто это было недостаточно странно, если я проверю строковое значение params, оно вернет то, что кажется строковой версией ссылки на Java.

Итак, я предполагаю, что задаю здесь несколько разных вопросов:

1) Как на самом деле работают переменные GWT / JSNI, и нужно ли мне делать что-то особенное для передачи значений?
2) Что на самом деле здесь происходит?
3) Есть ли более простой способ получить форматирование в стиле printf () в приложении GWT?

5
задан markerikson 22 February 2011 в 23:23
поделиться