Tapestry5.4.0 'ProgressiveDisplay' ajax call fails to render page on IE 11

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Tapestry5.4.0 'ProgressiveDisplay' ajax call fails to render page on IE 11

mayfire
I wonder if there's any issue with ProgressiveDisplay component on IE11.

One of our pages doesn't load entirely showing only 'Loading ...' message
when being tested on QA server which has IE11 and Jboss wildfly 10.0.0.
This page works when we test it locally on IE11 with Jboss wildfly 10.0.0.

But when we deploy on our QA server  the page doesn't load the table list.
Our tapestry project is part of an existing project which uses other
platforms like Struts. Every tapestry page gets loaded within an 'iframe'
when clicking on an menu link.

The .tml file has 'ProgressiveDisplay' component as follows.

<t:form>
<tc:groupbox>
        - - - - - - -
        - - - - - - -
        <t:ProgressiveDisplay t:id="showZones">
                     <div t:type="Zone" t:id="results" id="results"
update="show">
<div t:type="common/grid2" source="gridDataSource" row="zone"
rowsPerPage="20" t:add="${editColumns}" t:exclude="rowid,saved">
<p:nameCell>
<a t:type="pageLink" page="zone/edit"               context="zone.rowId"
t:mixins="common/blockingClick">${zone.name}</a>
</p:nameCell>
- - - - - - - - -
- - - - - - - - -

</div>
</t:ProgressiveDisplay>

and the java page file

@Property
private TaxZone zone;   // just a pojo
        - - -- - - - -
        - - - - - - -
@Persist
@Property
private CollectionGridDataSource<TaxZone> gridDataSource;

@InjectComponent
private Grid2 grid2; // implements GridModel

void onActivate() {
final String clientName = request.getParameter("clientName");
if (clientName != null) {
componentResources.discardPersistentFieldChanges();
}
}


Object onProgressiveDisplayFromShowZones() throws ClassNotFoundException,
SQLException, IOException {
if (theZones != null) {
return null;
}
try {
- - - - - - - -
- - - - - - - - -
// Get the list of zones from the database.
// Populate the TreeSet
theZones = new TreeSet<TaxZone>(zones);
                   - - - - - --
             }
     return null;
   }

On our QA server the flow never calls this
'onProgressiveDisplayFromShowZones' method.

The flow goes through the 'onActivate' method. It then calls Tapestry's
'ProgressiveDisplay.beginRender(). Where it invokes the
'deferredZoneUpdate' from 'zone.js' and from there calls 'onActivate' again
and shows the empty page.

The page does work on our local machine which is being tested only with the
tapestry related projects and not with the entire projects.

On QA server I have noticed in the IE browser debug mode that 'zone.js' is
not getting loaded  and also all other t5/core js files such as 'ajax.js'
and 'jquery.js'. don't get loaded.

I wonder if our Struts application which has the .jsp page and which
contains the 'iframe' having any effect on loading the progressivedisplay
ajax call. Although the tapestry projects are in separate .war file and it
shouldn't conflict with classloaders of other struts .war files.
Or there could be an issue with IE11. Although it works locally on IE.

The page also works on chrome and firefox on QA.

I would really greatly appreciate any suggestion or advice as to how to
research more on this progressivedisplay ajax call or IE related issues if
any or how to fix this issue.

Thank you all.
Reply | Threaded
Open this post in threaded view
|

Re: Tapestry5.4.0 'ProgressiveDisplay' ajax call fails to render page on IE 11

Chris Poulsen
Hi,

Sounds like IE is to blame - for once...

Could it be something with compatibility mode that is acting up?
https://msdn.microsoft.com/en-us/library/ff955410(v=vs.85).aspx

--
Chris

On Tue, Jun 21, 2016 at 4:29 PM, sheikh hossain <[hidden email]> wrote:

> I wonder if there's any issue with ProgressiveDisplay component on IE11.
>
> One of our pages doesn't load entirely showing only 'Loading ...' message
> when being tested on QA server which has IE11 and Jboss wildfly 10.0.0.
> This page works when we test it locally on IE11 with Jboss wildfly 10.0.0.
>
> But when we deploy on our QA server  the page doesn't load the table list.
> Our tapestry project is part of an existing project which uses other
> platforms like Struts. Every tapestry page gets loaded within an 'iframe'
> when clicking on an menu link.
>
> The .tml file has 'ProgressiveDisplay' component as follows.
>
> <t:form>
> <tc:groupbox>
>         - - - - - - -
>         - - - - - - -
>         <t:ProgressiveDisplay t:id="showZones">
>                      <div t:type="Zone" t:id="results" id="results"
> update="show">
> <div t:type="common/grid2" source="gridDataSource" row="zone"
> rowsPerPage="20" t:add="${editColumns}" t:exclude="rowid,saved">
> <p:nameCell>
> <a t:type="pageLink" page="zone/edit"               context="zone.rowId"
> t:mixins="common/blockingClick">${zone.name}</a>
> </p:nameCell>
> - - - - - - - - -
> - - - - - - - - -
>
> </div>
> </t:ProgressiveDisplay>
>
> and the java page file
>
> @Property
> private TaxZone zone;   // just a pojo
>         - - -- - - - -
>         - - - - - - -
> @Persist
> @Property
> private CollectionGridDataSource<TaxZone> gridDataSource;
>
> @InjectComponent
> private Grid2 grid2; // implements GridModel
>
> void onActivate() {
> final String clientName = request.getParameter("clientName");
> if (clientName != null) {
> componentResources.discardPersistentFieldChanges();
> }
> }
>
>
> Object onProgressiveDisplayFromShowZones() throws ClassNotFoundException,
> SQLException, IOException {
> if (theZones != null) {
> return null;
> }
> try {
> - - - - - - - -
> - - - - - - - - -
> // Get the list of zones from the database.
> // Populate the TreeSet
> theZones = new TreeSet<TaxZone>(zones);
>                    - - - - - --
>              }
>      return null;
>    }
>
> On our QA server the flow never calls this
> 'onProgressiveDisplayFromShowZones' method.
>
> The flow goes through the 'onActivate' method. It then calls Tapestry's
> 'ProgressiveDisplay.beginRender(). Where it invokes the
> 'deferredZoneUpdate' from 'zone.js' and from there calls 'onActivate' again
> and shows the empty page.
>
> The page does work on our local machine which is being tested only with the
> tapestry related projects and not with the entire projects.
>
> On QA server I have noticed in the IE browser debug mode that 'zone.js' is
> not getting loaded  and also all other t5/core js files such as 'ajax.js'
> and 'jquery.js'. don't get loaded.
>
> I wonder if our Struts application which has the .jsp page and which
> contains the 'iframe' having any effect on loading the progressivedisplay
> ajax call. Although the tapestry projects are in separate .war file and it
> shouldn't conflict with classloaders of other struts .war files.
> Or there could be an issue with IE11. Although it works locally on IE.
>
> The page also works on chrome and firefox on QA.
>
> I would really greatly appreciate any suggestion or advice as to how to
> research more on this progressivedisplay ajax call or IE related issues if
> any or how to fix this issue.
>
> Thank you all.
>
Reply | Threaded
Open this post in threaded view
|

Re: Tapestry5.4.0 'ProgressiveDisplay' ajax call fails to render page on IE 11

mayfire
Thanks a lot Chris ! I have just now tried with compatibility mode after
you have pointed out.
Didn't work though. I will look into this compatibility mode thing more to
see if I can find anything more.

Thanks again.

On Tue, Jun 21, 2016 at 11:36 AM, Chris Poulsen <[hidden email]>
wrote:

> Hi,
>
> Sounds like IE is to blame - for once...
>
> Could it be something with compatibility mode that is acting up?
> https://msdn.microsoft.com/en-us/library/ff955410(v=vs.85).aspx
>
> --
> Chris
>
> On Tue, Jun 21, 2016 at 4:29 PM, sheikh hossain <[hidden email]>
> wrote:
>
> > I wonder if there's any issue with ProgressiveDisplay component on IE11.
> >
> > One of our pages doesn't load entirely showing only 'Loading ...' message
> > when being tested on QA server which has IE11 and Jboss wildfly 10.0.0.
> > This page works when we test it locally on IE11 with Jboss wildfly
> 10.0.0.
> >
> > But when we deploy on our QA server  the page doesn't load the table
> list.
> > Our tapestry project is part of an existing project which uses other
> > platforms like Struts. Every tapestry page gets loaded within an 'iframe'
> > when clicking on an menu link.
> >
> > The .tml file has 'ProgressiveDisplay' component as follows.
> >
> > <t:form>
> > <tc:groupbox>
> >         - - - - - - -
> >         - - - - - - -
> >         <t:ProgressiveDisplay t:id="showZones">
> >                      <div t:type="Zone" t:id="results" id="results"
> > update="show">
> > <div t:type="common/grid2" source="gridDataSource" row="zone"
> > rowsPerPage="20" t:add="${editColumns}" t:exclude="rowid,saved">
> > <p:nameCell>
> > <a t:type="pageLink" page="zone/edit"               context="zone.rowId"
> > t:mixins="common/blockingClick">${zone.name}</a>
> > </p:nameCell>
> > - - - - - - - - -
> > - - - - - - - - -
> >
> > </div>
> > </t:ProgressiveDisplay>
> >
> > and the java page file
> >
> > @Property
> > private TaxZone zone;   // just a pojo
> >         - - -- - - - -
> >         - - - - - - -
> > @Persist
> > @Property
> > private CollectionGridDataSource<TaxZone> gridDataSource;
> >
> > @InjectComponent
> > private Grid2 grid2; // implements GridModel
> >
> > void onActivate() {
> > final String clientName = request.getParameter("clientName");
> > if (clientName != null) {
> > componentResources.discardPersistentFieldChanges();
> > }
> > }
> >
> >
> > Object onProgressiveDisplayFromShowZones() throws ClassNotFoundException,
> > SQLException, IOException {
> > if (theZones != null) {
> > return null;
> > }
> > try {
> > - - - - - - - -
> > - - - - - - - - -
> > // Get the list of zones from the database.
> > // Populate the TreeSet
> > theZones = new TreeSet<TaxZone>(zones);
> >                    - - - - - --
> >              }
> >      return null;
> >    }
> >
> > On our QA server the flow never calls this
> > 'onProgressiveDisplayFromShowZones' method.
> >
> > The flow goes through the 'onActivate' method. It then calls Tapestry's
> > 'ProgressiveDisplay.beginRender(). Where it invokes the
> > 'deferredZoneUpdate' from 'zone.js' and from there calls 'onActivate'
> again
> > and shows the empty page.
> >
> > The page does work on our local machine which is being tested only with
> the
> > tapestry related projects and not with the entire projects.
> >
> > On QA server I have noticed in the IE browser debug mode that 'zone.js'
> is
> > not getting loaded  and also all other t5/core js files such as 'ajax.js'
> > and 'jquery.js'. don't get loaded.
> >
> > I wonder if our Struts application which has the .jsp page and which
> > contains the 'iframe' having any effect on loading the progressivedisplay
> > ajax call. Although the tapestry projects are in separate .war file and
> it
> > shouldn't conflict with classloaders of other struts .war files.
> > Or there could be an issue with IE11. Although it works locally on IE.
> >
> > The page also works on chrome and firefox on QA.
> >
> > I would really greatly appreciate any suggestion or advice as to how to
> > research more on this progressivedisplay ajax call or IE related issues
> if
> > any or how to fix this issue.
> >
> > Thank you all.
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: Tapestry5.4.0 'ProgressiveDisplay' ajax call fails to render page on IE 11

mayfire
Upate:

I have found the issue here. First of all I want to thank Chris for the
quick response and pointing me to the right direction.
It was indeed an issue with IE document mode.

It seems the iframe is being forced to use the old document mode instead of
the standard mode by it's parent window which is using legacy code and
using the old document mode. The page rendering was failing inside the
iframe and also javascript( such as palette ) also was not working.

In our tapestry page we do set the document mode as standard as:

 void setupRender(final MarkupWriter writer) {
writer.writeRaw("<!DOCTYPE html>");
    }

But since it's inside an iframe the document mode is being set by it's
parent window which uses old mode.

I haven't figured out yet how to set up IE to load iframe content in
standard mode without changing it's parent window's mode since parent
window uses legacy code.

For anyone who has similar issue:

https://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx


Thank you all again.




On Tue, Jun 21, 2016 at 12:16 PM, sheikh hossain <[hidden email]>
wrote:

> Thanks a lot Chris ! I have just now tried with compatibility mode after
> you have pointed out.
> Didn't work though. I will look into this compatibility mode thing more to
> see if I can find anything more.
>
> Thanks again.
>
> On Tue, Jun 21, 2016 at 11:36 AM, Chris Poulsen <[hidden email]>
> wrote:
>
>> Hi,
>>
>> Sounds like IE is to blame - for once...
>>
>> Could it be something with compatibility mode that is acting up?
>> https://msdn.microsoft.com/en-us/library/ff955410(v=vs.85).aspx
>>
>> --
>> Chris
>>
>> On Tue, Jun 21, 2016 at 4:29 PM, sheikh hossain <[hidden email]>
>> wrote:
>>
>> > I wonder if there's any issue with ProgressiveDisplay component on IE11.
>> >
>> > One of our pages doesn't load entirely showing only 'Loading ...'
>> message
>> > when being tested on QA server which has IE11 and Jboss wildfly 10.0.0.
>> > This page works when we test it locally on IE11 with Jboss wildfly
>> 10.0.0.
>> >
>> > But when we deploy on our QA server  the page doesn't load the table
>> list.
>> > Our tapestry project is part of an existing project which uses other
>> > platforms like Struts. Every tapestry page gets loaded within an
>> 'iframe'
>> > when clicking on an menu link.
>> >
>> > The .tml file has 'ProgressiveDisplay' component as follows.
>> >
>> > <t:form>
>> > <tc:groupbox>
>> >         - - - - - - -
>> >         - - - - - - -
>> >         <t:ProgressiveDisplay t:id="showZones">
>> >                      <div t:type="Zone" t:id="results" id="results"
>> > update="show">
>> > <div t:type="common/grid2" source="gridDataSource" row="zone"
>> > rowsPerPage="20" t:add="${editColumns}" t:exclude="rowid,saved">
>> > <p:nameCell>
>> > <a t:type="pageLink" page="zone/edit"               context="zone.rowId"
>> > t:mixins="common/blockingClick">${zone.name}</a>
>> > </p:nameCell>
>> > - - - - - - - - -
>> > - - - - - - - - -
>> >
>> > </div>
>> > </t:ProgressiveDisplay>
>> >
>> > and the java page file
>> >
>> > @Property
>> > private TaxZone zone;   // just a pojo
>> >         - - -- - - - -
>> >         - - - - - - -
>> > @Persist
>> > @Property
>> > private CollectionGridDataSource<TaxZone> gridDataSource;
>> >
>> > @InjectComponent
>> > private Grid2 grid2; // implements GridModel
>> >
>> > void onActivate() {
>> > final String clientName = request.getParameter("clientName");
>> > if (clientName != null) {
>> > componentResources.discardPersistentFieldChanges();
>> > }
>> > }
>> >
>> >
>> > Object onProgressiveDisplayFromShowZones() throws
>> ClassNotFoundException,
>> > SQLException, IOException {
>> > if (theZones != null) {
>> > return null;
>> > }
>> > try {
>> > - - - - - - - -
>> > - - - - - - - - -
>> > // Get the list of zones from the database.
>> > // Populate the TreeSet
>> > theZones = new TreeSet<TaxZone>(zones);
>> >                    - - - - - --
>> >              }
>> >      return null;
>> >    }
>> >
>> > On our QA server the flow never calls this
>> > 'onProgressiveDisplayFromShowZones' method.
>> >
>> > The flow goes through the 'onActivate' method. It then calls Tapestry's
>> > 'ProgressiveDisplay.beginRender(). Where it invokes the
>> > 'deferredZoneUpdate' from 'zone.js' and from there calls 'onActivate'
>> again
>> > and shows the empty page.
>> >
>> > The page does work on our local machine which is being tested only with
>> the
>> > tapestry related projects and not with the entire projects.
>> >
>> > On QA server I have noticed in the IE browser debug mode that 'zone.js'
>> is
>> > not getting loaded  and also all other t5/core js files such as
>> 'ajax.js'
>> > and 'jquery.js'. don't get loaded.
>> >
>> > I wonder if our Struts application which has the .jsp page and which
>> > contains the 'iframe' having any effect on loading the
>> progressivedisplay
>> > ajax call. Although the tapestry projects are in separate .war file and
>> it
>> > shouldn't conflict with classloaders of other struts .war files.
>> > Or there could be an issue with IE11. Although it works locally on IE.
>> >
>> > The page also works on chrome and firefox on QA.
>> >
>> > I would really greatly appreciate any suggestion or advice as to how to
>> > research more on this progressivedisplay ajax call or IE related issues
>> if
>> > any or how to fix this issue.
>> >
>> > Thank you all.
>> >
>>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Tapestry5.4.0 'ProgressiveDisplay' ajax call fails to render page on IE 11

mayfire
Finally I have made it to work.

Here's what I had to do. In case someone has the same issue.

In my AppModule.java

configuration.add(SymbolConstants.JAVASCRIPT_INFRASTRUCTURE_PROVIDER,
"jquery");


and ...


@Contribute(Compatibility.class)
    public static void disableScriptaculous(MappedConfiguration<Trait,
Boolean> configuration)
    {
        configuration.add(Trait.SCRIPTACULOUS, false);
    }

These two changes fixed the 'Palette' button issue which were not working
in IE11 compatibility mode.

We had to test our app in compatibility mode since other non tapestry apps
are depended on it.


And for 'ProgressiveDisplay' display issue in compatibility mode I had to
add in the .tml file within the <head> the following meta tag.

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

The above code I got from the  general user forum where many had the same
IE compatibility issue.

These changes made our application work in IE11 in compatibility mode for
ajax/jquery related issues.


Thank you all.

On Tue, Jun 21, 2016 at 3:22 PM, sheikh hossain <[hidden email]> wrote:

> Upate:
>
> I have found the issue here. First of all I want to thank Chris for the
> quick response and pointing me to the right direction.
> It was indeed an issue with IE document mode.
>
> It seems the iframe is being forced to use the old document mode instead
> of the standard mode by it's parent window which is using legacy code and
> using the old document mode. The page rendering was failing inside the
> iframe and also javascript( such as palette ) also was not working.
>
> In our tapestry page we do set the document mode as standard as:
>
>  void setupRender(final MarkupWriter writer) {
> writer.writeRaw("<!DOCTYPE html>");
>     }
>
> But since it's inside an iframe the document mode is being set by it's
> parent window which uses old mode.
>
> I haven't figured out yet how to set up IE to load iframe content in
> standard mode without changing it's parent window's mode since parent
> window uses legacy code.
>
> For anyone who has similar issue:
>
> https://msdn.microsoft.com/en-us/library/cc288325(v=vs.85).aspx
>
>
> Thank you all again.
>
>
>
>
> On Tue, Jun 21, 2016 at 12:16 PM, sheikh hossain <[hidden email]>
> wrote:
>
>> Thanks a lot Chris ! I have just now tried with compatibility mode after
>> you have pointed out.
>> Didn't work though. I will look into this compatibility mode thing more
>> to see if I can find anything more.
>>
>> Thanks again.
>>
>> On Tue, Jun 21, 2016 at 11:36 AM, Chris Poulsen <[hidden email]>
>> wrote:
>>
>>> Hi,
>>>
>>> Sounds like IE is to blame - for once...
>>>
>>> Could it be something with compatibility mode that is acting up?
>>> https://msdn.microsoft.com/en-us/library/ff955410(v=vs.85).aspx
>>>
>>> --
>>> Chris
>>>
>>> On Tue, Jun 21, 2016 at 4:29 PM, sheikh hossain <[hidden email]>
>>> wrote:
>>>
>>> > I wonder if there's any issue with ProgressiveDisplay component on
>>> IE11.
>>> >
>>> > One of our pages doesn't load entirely showing only 'Loading ...'
>>> message
>>> > when being tested on QA server which has IE11 and Jboss wildfly 10.0.0.
>>> > This page works when we test it locally on IE11 with Jboss wildfly
>>> 10.0.0.
>>> >
>>> > But when we deploy on our QA server  the page doesn't load the table
>>> list.
>>> > Our tapestry project is part of an existing project which uses other
>>> > platforms like Struts. Every tapestry page gets loaded within an
>>> 'iframe'
>>> > when clicking on an menu link.
>>> >
>>> > The .tml file has 'ProgressiveDisplay' component as follows.
>>> >
>>> > <t:form>
>>> > <tc:groupbox>
>>> >         - - - - - - -
>>> >         - - - - - - -
>>> >         <t:ProgressiveDisplay t:id="showZones">
>>> >                      <div t:type="Zone" t:id="results" id="results"
>>> > update="show">
>>> > <div t:type="common/grid2" source="gridDataSource" row="zone"
>>> > rowsPerPage="20" t:add="${editColumns}" t:exclude="rowid,saved">
>>> > <p:nameCell>
>>> > <a t:type="pageLink" page="zone/edit"
>>>  context="zone.rowId"
>>> > t:mixins="common/blockingClick">${zone.name}</a>
>>> > </p:nameCell>
>>> > - - - - - - - - -
>>> > - - - - - - - - -
>>> >
>>> > </div>
>>> > </t:ProgressiveDisplay>
>>> >
>>> > and the java page file
>>> >
>>> > @Property
>>> > private TaxZone zone;   // just a pojo
>>> >         - - -- - - - -
>>> >         - - - - - - -
>>> > @Persist
>>> > @Property
>>> > private CollectionGridDataSource<TaxZone> gridDataSource;
>>> >
>>> > @InjectComponent
>>> > private Grid2 grid2; // implements GridModel
>>> >
>>> > void onActivate() {
>>> > final String clientName = request.getParameter("clientName");
>>> > if (clientName != null) {
>>> > componentResources.discardPersistentFieldChanges();
>>> > }
>>> > }
>>> >
>>> >
>>> > Object onProgressiveDisplayFromShowZones() throws
>>> ClassNotFoundException,
>>> > SQLException, IOException {
>>> > if (theZones != null) {
>>> > return null;
>>> > }
>>> > try {
>>> > - - - - - - - -
>>> > - - - - - - - - -
>>> > // Get the list of zones from the database.
>>> > // Populate the TreeSet
>>> > theZones = new TreeSet<TaxZone>(zones);
>>> >                    - - - - - --
>>> >              }
>>> >      return null;
>>> >    }
>>> >
>>> > On our QA server the flow never calls this
>>> > 'onProgressiveDisplayFromShowZones' method.
>>> >
>>> > The flow goes through the 'onActivate' method. It then calls Tapestry's
>>> > 'ProgressiveDisplay.beginRender(). Where it invokes the
>>> > 'deferredZoneUpdate' from 'zone.js' and from there calls 'onActivate'
>>> again
>>> > and shows the empty page.
>>> >
>>> > The page does work on our local machine which is being tested only
>>> with the
>>> > tapestry related projects and not with the entire projects.
>>> >
>>> > On QA server I have noticed in the IE browser debug mode that
>>> 'zone.js' is
>>> > not getting loaded  and also all other t5/core js files such as
>>> 'ajax.js'
>>> > and 'jquery.js'. don't get loaded.
>>> >
>>> > I wonder if our Struts application which has the .jsp page and which
>>> > contains the 'iframe' having any effect on loading the
>>> progressivedisplay
>>> > ajax call. Although the tapestry projects are in separate .war file
>>> and it
>>> > shouldn't conflict with classloaders of other struts .war files.
>>> > Or there could be an issue with IE11. Although it works locally on IE.
>>> >
>>> > The page also works on chrome and firefox on QA.
>>> >
>>> > I would really greatly appreciate any suggestion or advice as to how to
>>> > research more on this progressivedisplay ajax call or IE related
>>> issues if
>>> > any or how to fix this issue.
>>> >
>>> > Thank you all.
>>> >
>>>
>>
>>
>