كيف يمكنني تمرير كائن جافا سكريبت مجهول من جافا إلى جافا سكريبت في GWT؟

StackOverflow https://stackoverflow.com/questions/1457417

  •  12-09-2019
  •  | 
  •  

سؤال

أقوم بإنشاء غلاف GWT جولة مكتبة جافا سكريبت. إحدى وظائف JavaScript تأخذ كائن مجهول كوسفيتها على سبيل المثال:

obj.buildTabs({ hide: true, placeholder: 'placeholder' });

على الجانب Java كيف يمكنني إنشاء هذا النوع من كائن JavaScript ويمره إلى تطبيقي الأصلي؟

في الوقت الحالي، على جانب جافا لدي:

public void buildTabs(TabConfiguration config) {
   // ?
}

private native void buildTabs(?) /*-{
        $wnd.NAMESPACE.lib.buildTabs(?);
}-*/;

أي مؤشرات تقدر، شكرا.

هل كانت مفيدة؟

المحلول

إذا كنت تعرف بالضبط ما يجب استخدام المعلمات، فيمكنك القيام بما يلي (إزالة خطوط جديدة إضافية بعد: :)

private native void buildTabs(TabConfiguration config) /*-{
        $wnd.NAMESPACE.lib.buildTabs({hide: 
                config.@com.yournamehere.TabConfiguration::
                getHide()(), 
                placeholder: 
                config.@com.yournamehere.TabConfiguration::
                getPlaceholder()()});
}-*/;

مقطع صغير من وثائق GWT.:

public native void bar(JSNIExample x, String s) /*-{
    // Call instance method instanceFoo() on this
    this.@com.google.gwt.examples.JSNIExample::instanceFoo(Ljava/lang/String;)(s);

    // Call instance method instanceFoo() on x
    x.@com.google.gwt.examples.JSNIExample::instanceFoo(Ljava/lang/String;)(s);

    // Call static method staticFoo()
    @com.google.gwt.examples.JSNIExample::staticFoo(Ljava/lang/String;)(s);

    // Read instance field on this
    var val = this.@com.google.gwt.examples.JSNIExample::myInstanceField;

    // Write instance field on x
    x.@com.google.gwt.examples.JSNIExample::myInstanceField = val + " and stuff";

    // Read static field (no qualifier)
    @com.google.gwt.examples.JSNIExample::myStaticField = val + " and stuff";
  }-*/;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top