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

[jsr372-experts] Re: stateless views

From: Bauke Scholtz <balusc_at_gmail.com>
Date: Fri, 20 Mar 2015 19:01:10 +0100

>
> I know how client-side state saving works. That's not what I'm talking
> about.


I mean, for MVC, which is supposed to be stateless (in server side), you'd
need to store view scoped beans in client side state.

Cheers, B

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

> Well, #4 is what I would tell you.
>
> If you need to pass data from one stateless view to the next I would
> suggest either using the Flash, or request parameters.
>
> Kind regards,
> Manfred Riem
>
>
>
> On 3/20/15, 12:47 PM, Kito Mann wrote:
>
> 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 <%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 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
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>