GWT - передача массивов Java в Javascript

Я новичок в GWT и Javascript.

Я пытаюсь отправить в Java Java [] к моей функции JavaScript. Я использую экспортер GWT для обработки для меня. Вот как я все настроил.

static class gwtExplorerTest implements Exportable {

    @Export("$wnd.handleAnchorClick")
    public static void handleAnchorClick(int param1, int param2 , int[] a1 , int[] a2)
    {
        //process  things here          
    }
}

Может ли кто-нибудь помочь мне с кодом JavaScript для передачи массивов мне нужно здесь? Что у меня сейчас есть:

href="javascript:window.handleAnchorClick(" + currentRow + "," + currentColumn + "," + rowVals + "," + colVals + ",") "

как мой вызов функции JS, где rowVals и colVals - это два массива, которые мне нужно передать. Кажется, он не работает. Может кто-нибудь помочь мне?

Спасибо

2 ответа

Решение

Ваша функция в Java правильная, и gwt-exporter поддерживает этот синтаксис. Звонок от JS должен быть таким:

 window.handleAnchorClick(1, 2, [3,4], [5,6])

Ваша проблема в том, что вы пытаетесь вызвать экспортированный метод из href атрибут в вашем html и вы используете плохой синтаксис.

Во-первых, лучше использовать onClick атрибут вместо hrefпотому что вам не нужно javascript: тег, и лучше по умолчанию предотвратить. И я бы лучше определил функцию для вызова, чтобы избежать проблем с синтаксисом.

<script>
  var currentRow = 1;
  var currentColumn = 2;
  var rowVals = [3,4];
  var colVals = [5,6];

  function mycall() {
    window.handleAnchorClick(currentRow, currentColumn, rowVals, colVals);
  }
</script>

<!-- I prefer this -->
<a href="#" onClick="javascript:mycall()">click</a>

<!-- But this should work as well -->
<a href="#" onClick="window.handleAnchorClick(currentRow,currentColumn,rowVals,colVals)">click</a>

Если вы используете строку json, то я надеюсь, что вам нужно изменить тип параметра на строку в методе handleAnchorClick. Затем вам нужно набрать JSON.

Другие вопросы по тегам