Обработчик событий gwt не работает никак

#gwt #handler #uibinder

#gwt #обработчик #uibinder

Вопрос:

У меня проблема с этой странной вещью в GWT

когда я устанавливаю для своего uibinder значение getBody().addpend(), событие не запускается, но оно работает, когда я использую RootPanel.get().add(new p1()); работает. Похоже, это как-то связано с тем, как вы добавляете uibinder на страницу?

рабочее событие:: RootPanel.get().add(new p1());
not working:

 Document.get().getBody().appendChild(new p1().getElement());` 
  

обработчик событий выглядит:

 not working event::  Document.get().getBody().appendChild(new p1().getElement());
not working event::  Document.get().getBody().appendChild(new p1().getElement());


@UiHandler ("bleh")
void handleClick(ClickEvent e)
  

if (lEntidad.getText().length()>1)

 lEntidad.setText("");
  

Комментарии:

1. Возможно, вас заинтересует RootPanel.getBodyElement() . Подробнее о RootPanel.get()

Ответ №1:

Я не вижу весь ваш код, чтобы подтвердить это, но если вы добавляете виджеты в свое приложение с помощью getElement() , то любые события, которые вы добавляете через gwt, не будут проходить. За кулисами есть специальная логика событий, которая обрабатывает GWT, чтобы все работало в безопасной среде с утечкой памяти.

Вместо использования Document.appendChild() вы должны использовать любой ваш родительский виджет или любой корень вашего ui.xml файл есть. Например, an HTLMPanel . Добавьте свой новый виджет непосредственно к нему, тогда ваши события в виджете должны пройти.

Краткие сведения

Не добавляйте элементы, если у вас есть событие для элемента. Вместо этого добавьте виджеты. Это решило проблему, когда у меня это произошло.