jsr372-experts@javaserverfaces-spec-public.java.net

[jsr372-experts] Re: [jsr372-experts mirror] Re: stateless views

From: Kito Mann <kito.mann_at_virtua.com>
Date: Fri, 20 Mar 2015 13:47:01 -0400

Hey Manfred,

That makes sense to me. Perhaps you can answer my question, since you added
stateless views to Mojarra before they were added to the spec. Is there a
technical reason we can't associate view-scoped beans with a stateless view?

On Fri, Mar 20, 2015 at 1:37 PM, manfred riem <manfred.riem_at_oracle.com>
wrote:

> Hi,
>
> Client side state saving does NOT save the view scoped beans in the view
> state.
>
> 4 important reasons why this is:
>
> 1. Alignment with the CDI version that stored them in the session in the
> first place.
> 2. Make @PreDestroy working properly.
> 3. Fixing inconsistency with respect to server side state saving.
> 4. Managed beans (in whatever scope) are NOT view state.
>
> Kind regards,
> Manfred Riem
>
>
>
> On 3/20/15, 12:22 PM, Kito Mann wrote:
>
>
> On Fri, Mar 20, 2015 at 1:15 PM, Bauke Scholtz <balusc_at_gmail.com> wrote:
>
>> (I just noticed I accidentally hit "Reply" instead of "Reply All", so
>> here's the jsr372 again)
>>
>> This is not stateless, contradicting the MVC ideology.
>>
>
> Ok, so it's not stateless. Call it whatever you want. I still don't see
> a technical reason that view-scoped beans can't be associated with
> "stateless" views.
>
>>
>> You could perhaps look at how JSF does client side state saving.
>>
>
> I know how client-side state saving works. That's not what I'm talking
> about.
>
> This way there's no state in server side and the views never expire.
>> This only requires everything in the view scoped bean to be Serializable.
>> You should also require an encryption key configured on the server side to
>> ensure security of the state in hidden input.
>>
>> This also needs to be instructed to endusers with caution, or they
>> would put "too many" data in view scoped beans (datatables!) which get
>> serialized forth and back to client which is inefficient, and then they
>> would complain about performance.
>>
>> Cheers, B
>>
>> On Fri, Mar 20, 2015 at 6:09 PM, Kito Mann <kito.mann_at_virtua.com> wrote:
>>
>>> OK, let me clarify. I'm not talking about storing state for the view (I
>>> realize I said "view state" in the previous view). I'm just talking about
>>> having a way to associate a backing bean with a particular view and to keep
>>> that backing bean around as long as the view is currently being accessed.
>>> So, to answer your questions:
>>>
>>> * Where do you want to store that state on server side? Session?
>>> Application? Session, just as view-scoped beans are stored today.
>>>
>>> * How do you want to keep track of closed/expired views? This is less
>>> clear, since JSF wouldn't have a chance to clean up view-scoped objects
>>> when the view state is cleared. It would probably make sense to clear the
>>> view scope if another view is loaded within the same window.
>>>
>>> * What to do when user requests a view state which doesn't exist
>>> anymore because the session or application expired/restarted?
>>>
>>> If the session is expired, normal rules apply. If the app is
>>> restarted, the session is dead unless it was passivated, and if it was, the
>>> normal rules still apply.
>>>
>>> ___
>>>
>>> Kito D. Mann | @kito99 | Author, JSF in Action
>>> Virtua, Inc. | http://www.virtua.com | JSF/Java EE training and
>>> consulting
>>> http://www.JSFCentral.com | @jsfcentral
>>> +1 203-998-0403
>>>
>>> * Listen to the Enterprise Java Newscast: *http://
>>> <http://blogs.jsfcentral.com/JSFNewscast/>enterprisejavanews.com
>>> <http://ww.enterprisejavanews.com>*
>>> * JSFCentral Interviews Podcast:
>>> http://www.jsfcentral.com/resources/jsfcentralpodcasts/
>>> * Sign up for the JSFCentral Newsletter:
>>> http://oi.vresp.com/?fid=ac048d0e17
>>>
>>> On Fri, Mar 20, 2015 at 12:42 PM, Bauke Scholtz <balusc_at_gmail.com>
>>> wrote:
>>>
>>>> To expand a bit on it: Where do you want to store that state on server
>>>> side? Session? Application? How do you want to keep track of closed/expired
>>>> views? What to do when user requests a view state which doesn't exist
>>>> anymore because the session or application expired/restarted?
>>>>
>>>> Cheers, B
>>>>
>>>> On Fri, Mar 20, 2015 at 5:36 PM, Bauke Scholtz <balusc_at_gmail.com>
>>>> wrote:
>>>>
>>>>> View scope requires state on server side.
>>>>>
>>>>> Cheers, B
>>>>>
>>>>> On Fri, Mar 20, 2015 at 4:19 PM, Kito Mann <kito.mann_at_virtua.com>
>>>>> wrote:
>>>>>
>>>>>> Bauke, I understand the difference between MVC vs action/based
>>>>>> frameworks. I wrote an action-based framework right around the time Struts
>>>>>> came out, and I used Struts quite a bit before I got into JSF. I've also
>>>>>> worked with Spring MVC a little. I'm also on the MVC EG, which is where
>>>>>> others brought up the idea of a view scope for that framework.
>>>>>>
>>>>>> The point here is that if you define view state as being tied to a
>>>>>> particular session / view id / window id, then I don't see a reason you
>>>>>> can't use that as as a mapping for a view-scoped backing bean.
>>>>>>
>>>>>> ___
>>>>>>
>>>>>> Kito D. Mann | @kito99 | Author, JSF in Action
>>>>>> Virtua, Inc. | http://www.virtua.com | JSF/Java EE training and
>>>>>> consulting
>>>>>> http://www.JSFCentral.com | @jsfcentral
>>>>>> +1 203-998-0403 <%2B1%20203-998-0403>
>>>>>>
>>>>>> * Listen to the Enterprise Java Newscast: *http://
>>>>>> <http://blogs.jsfcentral.com/JSFNewscast/>enterprisejavanews.com
>>>>>> <http://ww.enterprisejavanews.com>*
>>>>>> * JSFCentral Interviews Podcast:
>>>>>> http://www.jsfcentral.com/resources/jsfcentralpodcasts/
>>>>>> * Sign up for the JSFCentral Newsletter:
>>>>>> http://oi.vresp.com/?fid=ac048d0e17
>>>>>>
>>>>>> On Fri, Mar 20, 2015 at 11:04 AM, Bauke Scholtz <balusc_at_gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> MVC is request/action based not component based and therefore
>>>>>>> indeed inherently stateless in server side perspective. If MVC developer
>>>>>>> intends to have view state in both server and client side, it should be
>>>>>>> homegrown by manually carrying around some view state identifier via
>>>>>>> request parameter(s) to request scoped beans and maintaining it in server
>>>>>>> side session (or switch to component based MVC like JSF which has already a
>>>>>>> builtin solution for that, the view scope).
>>>>>>>
>>>>>>> Food for read and thought:
>>>>>>> - http://stackoverflow.com/a/4804476
>>>>>>> - http://stackoverflow.com/a/4424775
>>>>>>> - http://stackoverflow.com/a/7031941
>>>>>>>
>>>>>>> Cheers, B
>>>>>>>
>>>>>>> On 14:13, Fri, Mar 20, 2015 Kito Mann <kito.mann_at_virtua.com> wrote:
>>>>>>>
>>>>>>>> Ok, maybe I'm missing something here. Aren't we discussing having
>>>>>>>> view-scoped beans for the MVC spec? Aren't all views in MVC stateless?
>>>>>>>>
>>>>>>>> ___
>>>>>>>>
>>>>>>>> Kito D. Mann | @kito99 | Author, JSF in Action
>>>>>>>> Virtua, Inc. | http://www.virtua.com | JSF/Java EE training and
>>>>>>>> consulting
>>>>>>>> http://www.JSFCentral.com | @jsfcentral
>>>>>>>> +1 203-998-0403 <%2B1%20203-998-0403>
>>>>>>>>
>>>>>>>> * Listen to the Enterprise Java Newscast: *http://
>>>>>>>> <http://blogs.jsfcentral.com/JSFNewscast/>enterprisejavanews.com
>>>>>>>> <http://ww.enterprisejavanews.com>*
>>>>>>>> * JSFCentral Interviews Podcast:
>>>>>>>> http://www.jsfcentral.com/resources/jsfcentralpodcasts/
>>>>>>>> * Sign up for the JSFCentral Newsletter:
>>>>>>>> http://oi.vresp.com/?fid=ac048d0e17
>>>>>>>>
>>>>>>>> On Fri, Mar 20, 2015 at 9:09 AM, manfred riem <
>>>>>>>> manfred.riem_at_oracle.com> wrote:
>>>>>>>>
>>>>>>>>> Indeed that is correct.
>>>>>>>>>
>>>>>>>>> Kind regards,
>>>>>>>>> Manfred
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 3/20/15, 8:05 AM, Bauke Scholtz wrote:
>>>>>>>>>
>>>>>>>>> Because there's no means of a view state.
>>>>>>>>>
>>>>>>>>> Cheers, B
>>>>>>>>>
>>>>>>>>> On Fri, Mar 20, 2015 at 2:01 PM, Kito Mann <kito.mann_at_virtua.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> So, if that's the case, does anyone know why stateless views
>>>>>>>>>> can't reference view-scoped beans?
>>>>>>>>>>
>>>>>>>>>> On Thu, Mar 19, 2015 at 10:57 AM, arjan tijms <
>>>>>>>>>> arjan.tijms_at_gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Mar 19, 2015 at 3:18 PM, Kito Mann <kito.mann_at_virtua.com
>>>>>>>>>>> > wrote:
>>>>>>>>>>>
>>>>>>>>>>>> As usual, the stateful nature of views is causing some issues
>>>>>>>>>>>> in an app I'm working on. Is there any particular reason that @ViewScoped
>>>>>>>>>>>> beans can't be used with stateless views? I think the only reason we have
>>>>>>>>>>>> that limitation is because of where they are stored, which could be
>>>>>>>>>>>> changed...
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> If I'm not mistaken that location has already been changed,
>>>>>>>>>>> has it not?
>>>>>>>>>>>
>>>>>>>>>>> @ViewScoped beans used to be stored in the view state, which
>>>>>>>>>>> caused several timing issues. Since then it has been moved to the session.
>>>>>>>>>>>
>>>>>>>>>>> Kind regards,
>>>>>>>>>>> Arjan Tijms
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ___
>>>>>>>>>>>>
>>>>>>>>>>>> Kito D. Mann | @kito99 | Author, JSF in Action
>>>>>>>>>>>> Virtua, Inc. | http://www.virtua.com | JSF/Java EE training
>>>>>>>>>>>> and consulting
>>>>>>>>>>>> http://www.JSFCentral.com | @jsfcentral
>>>>>>>>>>>> +1 203-998-0403 <%2B1%20203-998-0403>
>>>>>>>>>>>>
>>>>>>>>>>>> * Listen to the Enterprise Java Newscast: *http://
>>>>>>>>>>>> <http://blogs.jsfcentral.com/JSFNewscast/>enterprisejavanews.com
>>>>>>>>>>>> <http://ww.enterprisejavanews.com>*
>>>>>>>>>>>> * JSFCentral Interviews Podcast:
>>>>>>>>>>>> http://www.jsfcentral.com/resources/jsfcentralpodcasts/
>>>>>>>>>>>> * Sign up for the JSFCentral Newsletter:
>>>>>>>>>>>> http://oi.vresp.com/?fid=ac048d0e17
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>