我有一个处理程序类,我需要将它注入自定义小部件。
我在ClientModule类中尝试了bind()方法,但它没有被注入。
我应该做什么,请注入课程。
public class ExtendedTextBoxBase extends TextBox {
public ExtendedTextBoxBase() {
super.addBlurHandler(textBoxBlurHandler);
}
@Inject
TextBoxBlurHandler textBoxBlurHandler; /* custom handler */
}
自定义处理程序:
public class TextBoxBlurHandler implements BlurHandler {
@Inject
public TextBoxBlurHandler() {
}
@Override
public void onBlur(BlurEvent event) {
}
}
谢谢, 贝内特。
答案 0 :(得分:0)
初步反应:你是否在方法(可能是构造函数)中包含和@Inject语句,你想要注入处理程序?
如果是:您是否可以更具体地使用某些代码段?
答案 1 :(得分:0)
我发现两个可能的错误:
<强> 1。你有构造函数中的代码:
super.addBlurHandler(textBoxBlurHandler);
所以你应该按构造函数而不是字段注入处理程序。 Gin第一个crate对象而不是将字段注入类,因此你的处理程序textBoxBlurHandler为null。
<强> 2。你通过uibinder创建你的ExtendedTextBoxBase。如果是,你应该添加注释uiField provided = true,并注入这个字段:
@Inject
@UiField(provided=true)
ExtendedTextBoxBase extendedTextBoxBase;