在自定义小组件中注入处理程序

时间:2013-12-24 02:40:53

标签: gwt gin gwtp

我有一个处理程序类,我需要将它注入自定义小部件。

我在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) {

    }
}

谢谢, 贝内特。

2 个答案:

答案 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;