0

次の方法で gwt と組み合わせた inputmask:

パブリッククラス JQueryMask {

    public native static void setMask(Element elem,String mask) /*-{

        $wnd.jQuery(elem).find("input").inputmask(マスク);
        $wnd.jQuery(elem).find("入力").change(関数(e) {

            });
    }-*/;

    public native static void removeMask(Element elem) /*-{
        $wnd.jQuery(elem).find("入力").inputmask("削除");

    }-*/;


    public native static void setMaskWithGreadyFalse(Element elem,String mask) /*-{

    $wnd.jQuery(elem).find("input").inputmask({mask:mask,greedy:false});
    $wnd.jQuery(elem).find("入力").change(関数(e) {

            });

    }-*/;

}



このメソッドは、ウィジェットが初期化され、ブラウザーですべてが機能するときに呼び出されます。jQuery 変数が初期化されないため、同じ例外が発生します。

console.log($wnd.jQuery());

また:

console.log($wnd.$());

それは次のとおりです。

com.google.gwt.core.client.JavaScriptException: (null) @assembly.gwtlib.gui.plugins.JQueryMask::removeMask(Lcom/google/gwt/dom/client/Element;)([JavaScript オブジェクト(77)] ): ヌル
    com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript (BrowserChannelServer.java:249) で
    com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) で
    com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576) で
    com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304) で
    com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107) で
    assembly.gwtlib.gui.plugins.JQueryMask.removeMask(JQueryMask.java) で
    assembly.gwtlib.gui.widget.input.Input.setMask (Input.java:54) で
    assembly.gwtlib.gui.widget.input.DateInput で (DateInput.java:76)
    ...
4

2 に答える 2

1

GWTTestCases は独自の HTML ホスト ページを使用します (技術的には、1 つも持っていないか、静的なものではない可能性があるため)。そのため、テストに jQuery が必要な場合は、テスト自体からそれをロードする必要があります (たとえばScriptInjector、テストメソッドまたはからgwtSetUp()

于 2015-08-18T08:37:47.597 に答える
0

Thomas Broyer のおかげで、次のコードを実装しました。

コールバック c=new Callback() {

@Override public void onSuccess(Void result) { ScriptInjector.fromUrl("urlTo/jquery.inputmask.js").setWindow(ScriptInjector.TOP_WINDOW).setCallback(new Callback<Void, Exception>() { @Override public void onSuccess(Void result) { //Your tests } @Override public void onFailure(Exception reason) { reason.printStackTrace(); junit.framework.Assert.fail(reason.getMessage()); } }).inject(); } @Override public void onFailure(Exception reason) { reason.printStackTrace(); junit.framework.Assert.fail(reason.getMessage()); } }; ScriptInjector.fromUrl("urlTo/jQuery-2.1.4.min.js").setWindow(ScriptInjector.TOP_WINDOW).setCallback(c).inject();//setWindow(ScriptInjector.TOP_WINDOW) is important

于 2015-08-19T08:07:09.433 に答える