GWT 2.8
Я пытаюсь перетащить элемент из DataGrid, который является виджетом FocusPanel. Цель - это другая DataGrid, которая является виджетом другой FocusPanel, содержащейся в DialogBox. Метод onDragStart работает отлично. Я могу проверить с помощью отладчика (Firefox 53.0), что объект dataTransfer заполняется методом setData объекта DragStartEvent. На стороне цели правильно вызывается метод onDrop. Проблема в том, что объект dataTransfer имеет значение null, а метод getData DropEvent возвращает ошибку. Я не понимаю, почему объект dataTransfer является нулевым.
1 ответ
Я нашел ответ при чтении параграфа "Выполнение броска" в MDN "Операции перетаскивания". Существует фрагмент кода js, в котором event.preventDefault () помещается в конец функции onDrop. Это привлекло моё внимание, так как мой Java-код вызывает функцию protectDefault () в начале метода onDrop (). Я переместил вызов метода protectDefault () в конец метода, и он работает. DataTransfer больше не равен нулю, а getData () возвращает правильную информацию.