dev@javaserverfaces.java.net

Re: Flash scope still broken? (Mojarra 2.3m04)

From: manfred riem <manfred.riem_at_oracle.com>
Date: Wed, 02 Mar 2016 14:33:43 -0600

Hi Lenny,

PreRenderComponent is triggered during RENDER_RESPONSE phase just before
a specific component is rendered. If you are using the Flash then it
indeed is
at the wrong time.

Thanks!

Kind regards,
Manfred Riem

On 2/29/16, 12:49 PM, Lenny Primak wrote:
> I would think that preRenderComponent also satisfies
> INVOKE_APPLICATION requirement.
> I’ve been doing a lot of reading about this few years ago and I think
> I got that one correctly.
>
> <?xml version='1.0' encoding='UTF-8' ?>
> <!DOCTYPE html [ <!ENTITY nbsp "&#160;"> ]>
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
> xmlns:h="http://xmlns.jcp.org/jsf/html"
> xmlns:jsf="http://xmlns.jcp.org/jsf"
> xmlns:f="http://xmlns.jcp.org/jsf/core"
> xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
> xmlns:baw="http://xmlns.jcp.org/jsf/composite/components"
> xmlns:flowlogix="http://flowlogix.com/ui"
> xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
> xmlns:pf="http://primefaces.org/ui"
> xmlns:o="http://omnifaces.org/ui">
> <head jsf:id="head">
> <f:view transient="#{empty transient? 'true' : transient}"/>
> <f:event type="preRenderComponent"
> listener="#{layout.setPageType(pageType)}”/>
> ………………
>
> @Model @Getter
> public class Layout
> {
> public enum PageType { Index, Pallets, Logistics }
>
>
> public void setPageType(PageType pageType)
> {
> -----------------
> if (Faces.hasSession() && !Faces.getSession(false).isNew() &&
> Boolean.TRUE.equals(Faces.getFlashAttribute(AttributeKeys.SESSION_EXPIRED_KEY)))
> {
> // below doesn’t get executed
>
> Faces.getContext().addMessage(AttributeKeys.SESSION_EXPIRED_KEY,
> new FacesMessage(FacesMessage.SEVERITY_INFO,
> null, "Your Session has Expired"));
> }
> ...
>
>> On Feb 29, 2016, at 12:42 PM, arjan tijms <arjan.tijms_at_gmail.com
>> <mailto:arjan.tijms_at_gmail.com>> wrote:
>>
>> Hi,
>>
>> On Monday, February 29, 2016, Lenny Primak <lprimak_at_hope.nyc.ny.us
>> <mailto:lprimak_at_hope.nyc.ny.us>> wrote:
>>
>> The funny thing is that I am not using flash at all.
>> The only Flash-related call in the process here is a
>> getFlashAttribute within
>> preRenderComponent event.
>>
>>
>> That probably counts for "using The Flash" I'm afraid.
>>
>> It's conceptually a bit weird though that by just reading and never
>> writing the code still wants to write out the flash cookie.
>>
>> Kind regards,
>> Arjan
>>
>>
>>
>>
>> I don’t see how this could affect things at all.
>> This only happens for (unconfirmed) very large pages.
>>
>> > On Feb 29, 2016, at 11:08 AM, manfred riem
>> <manfred.riem_at_oracle.com <javascript:;>> wrote:
>> >
>> > Hi Lenny,
>> >
>> > You are using the Flash too late in the process, aka during render.
>> >
>> > If you do not want this problem to show up please use the Flash
>> during INVOKE_APPLICATION.
>> >
>> > Thanks!
>> >
>> > Kind regards,
>> > Manfred Riem
>> >
>> > On 2/26/16, 11:41 PM, Lenny Primak wrote:
>> >> I am using Mojarra 2.3m04, and Flash scope is still broken.
>> >> I am getting this error:
>> >>
>> >> -----
>> >> JSF1095: The response was already committed by the time we
>> tried to set the outgoing cookie for the flash. Any values stored
>> to the flash will not be available on the next request.
>> >> ——
>> >>
>> >> The weird thing is that I am not even putting anything into
>> flash scope, and there is no flash cookie in the browser.
>> >>
>> >> I put this snippet in web.xml:
>> >> <context-param>
>> >> <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name>
>> >> <param-value>32768</param-value>
>> >> </context-param>
>> >>
>> >> which solves this problem 99% of the time, but for some large
>> pages, the issue persists.
>> >>
>> >> I have no way to reproduce this as this happens very, very
>> rarely, and only in production
>> >> (yes, I am using 2.3m04 in production and it works great!)
>> >
>>
>