You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Walter Mourão <wa...@gmail.com> on 2011/06/10 14:20:25 UTC

ViewExpiredException only in some IE8

Hi folks,
I'm using Myfaces 1.2.9, Trinidad 1.2.14.
the following commandLink (and others in the same application) causes
ViewExpiredException in some (!!!) IE8...

        <tr:commandLink id="proximaPagina"
action="#{listarRelatoriosController.visualizandoRelatorioMudarPagina}"
disabled="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
ge form.paginas}" partialSubmit="false">
            <tr:image source="/images/arrow-next.gif"
shortDesc="#{messages['proxima.pagina']}" inlineStyle="border-style:none" />
            <f:setPropertyActionListener
value="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual +
1}"
target="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual}"
/>
        </tr:commandLink>

I'm lost... Hints ?

Walter Mourão
http://waltermourao.com.br
http://arcadian.com.br
http://oriens.com.br

Re: ViewExpiredException only in some IE8

Posted by Walter Mourão <wa...@gmail.com>.
I didn't really realized what is happening but it is related with html code
I'm rendering directly+the use of the trinidad flow scope parameter. To show
some images stored in the page flow scope I was using the
encodeCurrentPageFlowScopeURL method. Once I stopped using it and started
putting the images in the session and using a simple servlet to show the
images, the problem stopped... Since it was an urgent situation, I released
this way.

Many thanks,

Walter Mourão
http://waltermourao.com.br
http://arcadian.com.br
http://oriens.com.br



On Mon, Jun 13, 2011 at 6:34 PM, Matt Cooper <mc...@apache.org> wrote:

> I believe that if you are seeing a different browser mode for "localhost"
> vs. "machinename" then this is either coming from the IE compatibility view
> preferences where the user has chosen to run pages from a given domain in
> compatibility view or the domain is listed in one of Microsoft's xml files
> like http://ie9cvlist.ie.microsoft.com/ie9CompatViewList.xml where it will
> (by default) try to choose some other document mode for that domain.
>
> Unfortunately, there is no way to force IE version X to also use Browser
> Mode X for your web application.  You can't even know what version "X" is
> because the user agent header that IE sends to the server changes based on
> what Browser Mode is active.
>
> However, it is possible to force IE to use a Document Mode that matches the
> currently-assigned Browser Mode if the following were in the
> DocumentRenderer:
>
>        // Force IE to use matching "browser mode" (Agent version) and
> "document mode" (doctype).
>        // IE requires this be the FIRST element in the HEAD tag.
>        Agent agent = rc.getAgent();
>
>        if (agent.getAgentName().equals(Agent.AGENT_IE))
>        {
>          String agentVersion = agent.getAgentVersion();
>          float ieVersion;
>
>          try
>          {
>            ieVersion = Float.parseFloat(agentVersion);
>          }
>          catch (NumberFormatException e)
>          {
>            ieVersion = 7.0f;
>          }
>
>          out.startElement("meta", null);
>          out.writeAttribute("http-equiv" , "X-UA-Compatible", null);
>          out.writeAttribute("content" , "IE=" + ieVersion, null);
>          out.endElement("meta");
>        }
>
> This meta tag might help prevent some of the mismatching mode behaviors; it
> is funny how "compatibility view" makes things incompatible :)  Too bad
> there isn't a "just use the real behavior for the version of the browser
> that is installed" mode, maybe if enough people asked for it, Microsoft
> might add such a switch; e.g.:
>
>   - force IE10 to use Document Mode 10 and Browser Mode 10
>   - force IE9 to use Document Mode 9 and Browser Mode 9
>   - force IE8 to use Document Mode 8 and Browser Mode 8
>
>
> An extra level of protection could be when running Internet Explorer, take
> the ieVersion number as seen above and somehow send it to the browser and
> then in JavaScript:
>
>   - if ieVersion is a number less than 8, and
>   - if the variable "document.documentMode" is not equal to null
>
> then you are running in compatibility view mode.  When this is detected,
> you
> could then show an alert to the user, asking them to disable compatibility
> view.  Perhaps the above meta tag is sufficient on its own--it is worth
> testing.
>
> Note that it looks like Microsoft does have a process to get your domain
> removed from their compatibility view xml files:
> http://msdn.microsoft.com/en-us/library/dd567845(v=vs.85).aspx
>
> Regards,
> Matt
>
> On Mon, Jun 13, 2011 at 2:52 PM, Cédric Durmont <cd...@gmail.com>
> wrote:
>
> > Try changing the "compatibility mode" in IE. IE8 "almost always"
> > switches to IE7-compatible mode with Trinidad.
> > Also, you may get different result if you access your Trinidad app
> > with "http://machinename/..." and "http://localhost/...". As strange
> > as it sounds, IE has a different behavior when you use "localhost"
> > (and this has nothing to do with security parameters... Man I love
> > this browser !)
> >
> > Regards,
> > Cedric
> >
> > 2011/6/10 Walter Mourão <wa...@gmail.com>:
> > > Hi Cedric,
> > > just tried with tr:setActionListener and I've got the same result...
> this
> > is
> > > really a strange problem: IE8 (same 'complete' version) accessing the
> > same
> > > site, same configuration, etc. Works with one and doesn't work with the
> > > other. Continuing the quest...
> > >
> > > Walter Mourão
> > > http://waltermourao.com.br
> > > http://arcadian.com.br
> > > http://oriens.com.br
> > >
> > >
> > >
> > > On Fri, Jun 10, 2011 at 10:02 AM, Cédric Durmont <cd...@gmail.com>
> > wrote:
> > >
> > >> Hi Walter,
> > >>
> > >> The only thing that looks unusual to me in your code is the mix
> > >> between tr:commandLink and f:setPropertyActionListener. Have you tried
> > >> tr:setActionListener instead ?
> > >> (btw I see no reason why this would cause a viewExpiredException on
> > >> some browsers, but who said computing was an exact science ?)
> > >>
> > >> Regards,
> > >> Cedric
> > >>
> > >> 2011/6/10 Walter Mourão <wa...@gmail.com>:
> > >> > Hi folks,
> > >> > I'm using Myfaces 1.2.9, Trinidad 1.2.14.
> > >> > the following commandLink (and others in the same application)
> causes
> > >> > ViewExpiredException in some (!!!) IE8...
> > >> >
> > >> >        <tr:commandLink id="proximaPagina"
> > >> >
> > action="#{listarRelatoriosController.visualizandoRelatorioMudarPagina}"
> > >> >
> > >>
> >
> disabled="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> > >> > ge form.paginas}" partialSubmit="false">
> > >> >            <tr:image source="/images/arrow-next.gif"
> > >> > shortDesc="#{messages['proxima.pagina']}"
> > inlineStyle="border-style:none"
> > >> />
> > >> >            <f:setPropertyActionListener
> > >> >
> > value="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> > >> +
> > >> > 1}"
> > >> >
> > >>
> >
> target="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual}"
> > >> > />
> > >> >        </tr:commandLink>
> > >> >
> > >> > I'm lost... Hints ?
> > >> >
> > >> > Walter Mourão
> > >> > http://waltermourao.com.br
> > >> > http://arcadian.com.br
> > >> > http://oriens.com.br
> > >> >
> > >>
> > >
> >
>

Re: ViewExpiredException only in some IE8

Posted by Matt Cooper <mc...@apache.org>.
I believe that if you are seeing a different browser mode for "localhost"
vs. "machinename" then this is either coming from the IE compatibility view
preferences where the user has chosen to run pages from a given domain in
compatibility view or the domain is listed in one of Microsoft's xml files
like http://ie9cvlist.ie.microsoft.com/ie9CompatViewList.xml where it will
(by default) try to choose some other document mode for that domain.

Unfortunately, there is no way to force IE version X to also use Browser
Mode X for your web application.  You can't even know what version "X" is
because the user agent header that IE sends to the server changes based on
what Browser Mode is active.

However, it is possible to force IE to use a Document Mode that matches the
currently-assigned Browser Mode if the following were in the
DocumentRenderer:

        // Force IE to use matching "browser mode" (Agent version) and
"document mode" (doctype).
        // IE requires this be the FIRST element in the HEAD tag.
        Agent agent = rc.getAgent();

        if (agent.getAgentName().equals(Agent.AGENT_IE))
        {
          String agentVersion = agent.getAgentVersion();
          float ieVersion;

          try
          {
            ieVersion = Float.parseFloat(agentVersion);
          }
          catch (NumberFormatException e)
          {
            ieVersion = 7.0f;
          }

          out.startElement("meta", null);
          out.writeAttribute("http-equiv" , "X-UA-Compatible", null);
          out.writeAttribute("content" , "IE=" + ieVersion, null);
          out.endElement("meta");
        }

This meta tag might help prevent some of the mismatching mode behaviors; it
is funny how "compatibility view" makes things incompatible :)  Too bad
there isn't a "just use the real behavior for the version of the browser
that is installed" mode, maybe if enough people asked for it, Microsoft
might add such a switch; e.g.:

   - force IE10 to use Document Mode 10 and Browser Mode 10
   - force IE9 to use Document Mode 9 and Browser Mode 9
   - force IE8 to use Document Mode 8 and Browser Mode 8


An extra level of protection could be when running Internet Explorer, take
the ieVersion number as seen above and somehow send it to the browser and
then in JavaScript:

   - if ieVersion is a number less than 8, and
   - if the variable "document.documentMode" is not equal to null

then you are running in compatibility view mode.  When this is detected, you
could then show an alert to the user, asking them to disable compatibility
view.  Perhaps the above meta tag is sufficient on its own--it is worth
testing.

Note that it looks like Microsoft does have a process to get your domain
removed from their compatibility view xml files:
http://msdn.microsoft.com/en-us/library/dd567845(v=vs.85).aspx

Regards,
Matt

On Mon, Jun 13, 2011 at 2:52 PM, Cédric Durmont <cd...@gmail.com> wrote:

> Try changing the "compatibility mode" in IE. IE8 "almost always"
> switches to IE7-compatible mode with Trinidad.
> Also, you may get different result if you access your Trinidad app
> with "http://machinename/..." and "http://localhost/...". As strange
> as it sounds, IE has a different behavior when you use "localhost"
> (and this has nothing to do with security parameters... Man I love
> this browser !)
>
> Regards,
> Cedric
>
> 2011/6/10 Walter Mourão <wa...@gmail.com>:
> > Hi Cedric,
> > just tried with tr:setActionListener and I've got the same result... this
> is
> > really a strange problem: IE8 (same 'complete' version) accessing the
> same
> > site, same configuration, etc. Works with one and doesn't work with the
> > other. Continuing the quest...
> >
> > Walter Mourão
> > http://waltermourao.com.br
> > http://arcadian.com.br
> > http://oriens.com.br
> >
> >
> >
> > On Fri, Jun 10, 2011 at 10:02 AM, Cédric Durmont <cd...@gmail.com>
> wrote:
> >
> >> Hi Walter,
> >>
> >> The only thing that looks unusual to me in your code is the mix
> >> between tr:commandLink and f:setPropertyActionListener. Have you tried
> >> tr:setActionListener instead ?
> >> (btw I see no reason why this would cause a viewExpiredException on
> >> some browsers, but who said computing was an exact science ?)
> >>
> >> Regards,
> >> Cedric
> >>
> >> 2011/6/10 Walter Mourão <wa...@gmail.com>:
> >> > Hi folks,
> >> > I'm using Myfaces 1.2.9, Trinidad 1.2.14.
> >> > the following commandLink (and others in the same application) causes
> >> > ViewExpiredException in some (!!!) IE8...
> >> >
> >> >        <tr:commandLink id="proximaPagina"
> >> >
> action="#{listarRelatoriosController.visualizandoRelatorioMudarPagina}"
> >> >
> >>
> disabled="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> >> > ge form.paginas}" partialSubmit="false">
> >> >            <tr:image source="/images/arrow-next.gif"
> >> > shortDesc="#{messages['proxima.pagina']}"
> inlineStyle="border-style:none"
> >> />
> >> >            <f:setPropertyActionListener
> >> >
> value="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> >> +
> >> > 1}"
> >> >
> >>
> target="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual}"
> >> > />
> >> >        </tr:commandLink>
> >> >
> >> > I'm lost... Hints ?
> >> >
> >> > Walter Mourão
> >> > http://waltermourao.com.br
> >> > http://arcadian.com.br
> >> > http://oriens.com.br
> >> >
> >>
> >
>

Re: ViewExpiredException only in some IE8

Posted by Cédric Durmont <cd...@gmail.com>.
Try changing the "compatibility mode" in IE. IE8 "almost always"
switches to IE7-compatible mode with Trinidad.
Also, you may get different result if you access your Trinidad app
with "http://machinename/..." and "http://localhost/...". As strange
as it sounds, IE has a different behavior when you use "localhost"
(and this has nothing to do with security parameters... Man I love
this browser !)

Regards,
Cedric

2011/6/10 Walter Mourão <wa...@gmail.com>:
> Hi Cedric,
> just tried with tr:setActionListener and I've got the same result... this is
> really a strange problem: IE8 (same 'complete' version) accessing the same
> site, same configuration, etc. Works with one and doesn't work with the
> other. Continuing the quest...
>
> Walter Mourão
> http://waltermourao.com.br
> http://arcadian.com.br
> http://oriens.com.br
>
>
>
> On Fri, Jun 10, 2011 at 10:02 AM, Cédric Durmont <cd...@gmail.com> wrote:
>
>> Hi Walter,
>>
>> The only thing that looks unusual to me in your code is the mix
>> between tr:commandLink and f:setPropertyActionListener. Have you tried
>> tr:setActionListener instead ?
>> (btw I see no reason why this would cause a viewExpiredException on
>> some browsers, but who said computing was an exact science ?)
>>
>> Regards,
>> Cedric
>>
>> 2011/6/10 Walter Mourão <wa...@gmail.com>:
>> > Hi folks,
>> > I'm using Myfaces 1.2.9, Trinidad 1.2.14.
>> > the following commandLink (and others in the same application) causes
>> > ViewExpiredException in some (!!!) IE8...
>> >
>> >        <tr:commandLink id="proximaPagina"
>> > action="#{listarRelatoriosController.visualizandoRelatorioMudarPagina}"
>> >
>> disabled="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
>> > ge form.paginas}" partialSubmit="false">
>> >            <tr:image source="/images/arrow-next.gif"
>> > shortDesc="#{messages['proxima.pagina']}" inlineStyle="border-style:none"
>> />
>> >            <f:setPropertyActionListener
>> > value="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
>> +
>> > 1}"
>> >
>> target="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual}"
>> > />
>> >        </tr:commandLink>
>> >
>> > I'm lost... Hints ?
>> >
>> > Walter Mourão
>> > http://waltermourao.com.br
>> > http://arcadian.com.br
>> > http://oriens.com.br
>> >
>>
>

Re: ViewExpiredException only in some IE8

Posted by Walter Mourão <wa...@gmail.com>.
Hi Cedric,
just tried with tr:setActionListener and I've got the same result... this is
really a strange problem: IE8 (same 'complete' version) accessing the same
site, same configuration, etc. Works with one and doesn't work with the
other. Continuing the quest...

Walter Mourão
http://waltermourao.com.br
http://arcadian.com.br
http://oriens.com.br



On Fri, Jun 10, 2011 at 10:02 AM, Cédric Durmont <cd...@gmail.com> wrote:

> Hi Walter,
>
> The only thing that looks unusual to me in your code is the mix
> between tr:commandLink and f:setPropertyActionListener. Have you tried
> tr:setActionListener instead ?
> (btw I see no reason why this would cause a viewExpiredException on
> some browsers, but who said computing was an exact science ?)
>
> Regards,
> Cedric
>
> 2011/6/10 Walter Mourão <wa...@gmail.com>:
> > Hi folks,
> > I'm using Myfaces 1.2.9, Trinidad 1.2.14.
> > the following commandLink (and others in the same application) causes
> > ViewExpiredException in some (!!!) IE8...
> >
> >        <tr:commandLink id="proximaPagina"
> > action="#{listarRelatoriosController.visualizandoRelatorioMudarPagina}"
> >
> disabled="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> > ge form.paginas}" partialSubmit="false">
> >            <tr:image source="/images/arrow-next.gif"
> > shortDesc="#{messages['proxima.pagina']}" inlineStyle="border-style:none"
> />
> >            <f:setPropertyActionListener
> > value="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> +
> > 1}"
> >
> target="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual}"
> > />
> >        </tr:commandLink>
> >
> > I'm lost... Hints ?
> >
> > Walter Mourão
> > http://waltermourao.com.br
> > http://arcadian.com.br
> > http://oriens.com.br
> >
>

Re: ViewExpiredException only in some IE8

Posted by Cédric Durmont <cd...@gmail.com>.
Hi Walter,

The only thing that looks unusual to me in your code is the mix
between tr:commandLink and f:setPropertyActionListener. Have you tried
tr:setActionListener instead ?
(btw I see no reason why this would cause a viewExpiredException on
some browsers, but who said computing was an exact science ?)

Regards,
Cedric

2011/6/10 Walter Mourão <wa...@gmail.com>:
> Hi folks,
> I'm using Myfaces 1.2.9, Trinidad 1.2.14.
> the following commandLink (and others in the same application) causes
> ViewExpiredException in some (!!!) IE8...
>
>        <tr:commandLink id="proximaPagina"
> action="#{listarRelatoriosController.visualizandoRelatorioMudarPagina}"
> disabled="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual
> ge form.paginas}" partialSubmit="false">
>            <tr:image source="/images/arrow-next.gif"
> shortDesc="#{messages['proxima.pagina']}" inlineStyle="border-style:none" />
>            <f:setPropertyActionListener
> value="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual +
> 1}"
> target="#{listarRelatoriosVisualizandoRelatorioMudarPaginaForm.paginaAtual}"
> />
>        </tr:commandLink>
>
> I'm lost... Hints ?
>
> Walter Mourão
> http://waltermourao.com.br
> http://arcadian.com.br
> http://oriens.com.br
>