Tuesday, January 27, 2015

Re: Error migrating to GWT 2.7.0 (<script> tags in the gwt.xml files)

Yeah, this was a hassle for me too.  This is the breaking change in 2.7.0:

https://code.google.com/p/google-web-toolkit/issues/detail?id=8578

I did a few things to bridge the gap from 2.6.1 to 2.7.0.

(1) Add this to the project.gwt.xml to not crash on those <script> tags:

  <set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>


(2) Add this to my GWT client entry point (details will vary depending on your specific .js files):

    @Override

    public void onModuleLoad()

    {

        if (Browser.isJQueryLoaded()) // GWT 2.6.1 <script> tags are supported

        {

            if (!Browser.isTouch())

                Browser.setTooltips(BUISupport.initJQueryTooltip());

        }

        else // GWT 2.7.0+; we need to load external script files.

        {

            List<String> injectList = new ArrayList<String>();

            injectList.add("html2canvas.min.js");

            injectList.add("jquery-1.11.1.min.js");

            injectList.add("jquery-ui.min.js");

            inject(injectList);

        }

...

    public static native boolean isJQueryLoaded()

    /*-{

        return (typeof $wnd.jQuery != 'undefined');

    }-*/;


    private void inject(final List<String> p_jsList)

    {

        final String js =

            GWT.getModuleBaseForStaticFiles() + p_jsList.remove(0);


        ScriptInjector.fromUrl(js).setCallback(new Callback<Void, Exception>()

        {

            @Override

            public void onFailure(Exception e)

            {

                Log.log("inject " + js + " failure " + e);

            }


            @Override

            public void onSuccess(Void ok)

            {

                if (!p_jsList.isEmpty())

                    inject(p_jsList);

                else if (!Browser.isTouch())

                    Browser.setTooltips(BUISupport.initJQueryTooltip());

            }

        }).setWindow(ScriptInjector.TOP_WINDOW).inject();

    }


On Tuesday, January 27, 2015 at 9:20:53 AM UTC-8, ssg wrote:
 Hi All,
I am getting the following error while running ANT Build.xml; Please help me in correcting the following.

[java]       [ERROR] The Cross-Site-Iframe linker does not support <script> tags in the gwt.xml files, but the gwt.xml file (or the gwt.xml files which it includes) contains the following script tags:

     [java] js/ext/adapter/ext/ext-base.js

     [java] js/ext/ext-all.js

     [java] In order for your application to run correctly, you will need to include these tags in your host page directly. In order to avoid this error, you will need to remove the script tags from the gwt.xml file, or add this property to the gwt.xml file: <set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>

Based on the above message,
STEP 1:
  How do I include these tags in the host page? WHERE is the host page and WHAT all tags I have to include in the host page ?

STEP 2:
 I have added <set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/> to my gwt.xml file.

Below is my gwt.xml code;


<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">-->
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "http://www.gwtproject.org/doctype/2.7.0/gwt-module.dtd">
<module>
    <inherits name="com.google.gwt.user.User" />
    <inherits name='com.google.gwt.json.JSON' />
    <!-- Inherit the GWTEXT stuff.-->
    <stylesheet src="js/ext/resources/css/ext-all.css" />

    <set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>

    <script src="js/ext/adapter/ext/ext-base.js" />
    <script src="js/ext/ext-all.js" />
    <inherits name="com.gwtext.GwtExt" />
    <inherits name="com.gwtextux.GwtExtUx" />

    <!-- RPC service servlet declarations -->
    <servlet path="/appname.rpc" class="com.acg.mmsea.server.service.AppnameServiceImpl" />
    <servlet path="/codeDecode.rpc"
        class="com.acg.appname.server.service.AppnameCodesDecodeServiceImpl" />

    <!-- Specify the app entry point class. -->
    <entry-point class='com.acg.appname.gwt.client.Appname' />
</module>

Thanks a lot in advance.


--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment