더 addValueChangeHandler 방법이 없다 생각 > (따라서 HasValueChangeHandlers <T>) 그때가 :UiBinder 잘못 내가 HasValue < T를 목록 상자를 확장하고 구현하는 클래스 선택기 <T>이
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}
나는이 Selector의 서브 클래스, MessageListBox, 특정 특수 객체의 Selector에 대한 몇 가지 추가 함수를 추가합니다. 그럼 ... 내 위젯 중 하나에
@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ChangeEvent event) {
((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
을 그리고 이것은 작동하지만 하나의 (그리고 잠시 생성 코드의 장소가 있기 때문에 나는 실제로 대신 ValueChangeEvent을 듣고 방법을 변경하려면 이후로 Raw ChangeEvents를 만드는 방법을 찾았습니다. [ERROR] 필드를 'filterColumnSelect가'연결된 'addValueChangeHandler'방법을 가지고 있지 않습니다 그래서, 그때 GWT과 함께 컴파일에 실패 지금
@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ValueChangeEvent<Column> event) {
((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
... 코드로 변경하지만.
음 ... 그렇습니다. Selector에서 상속하며 모든 클래스는 공개됩니다. 뭐라 구요?
참고로 ValueListBox도 살펴 보았지만 지원하지 않는 기능이 있으므로 밖으로 나왔습니다.
직장에서도 내 'ValueListBox' 대체품을 만들었으므로 지금은 코드가 없습니다. 하지만'filterColumnSelect.addValueChangeHandler()'를 할 수 있습니까? 작동한다면'@ UiHandler'도 제대로 작동 할 것입니다. – Churro
예, 수동으로 처리기를 추가 할 수는 있지만 @UiHandler는 어쨌든 작동하지 않습니다. –
직감적으로 UiBinder가 컴파일 할 때 (소스 코드 분석이나 반성, 내부 동작을 알지 못하는) 어떤 프로세스가 수퍼 클래스 메소드를 좋아하지 않을 수도 있다는 생각이 들었습니다. 그래서 슈퍼 클래스에 위임 한 서브 클래스에 오버라이드 메소드를 추가하려고 시도했다. 이제 작동합니다. 그래서 적어도 문제가 어디인지 알고 있습니다 .... 그래도 수퍼 클래스에있는 ChangeHandler에는 아무런 문제가 없다는 이상한 생각이 들었습니다. : -/ –