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

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

From: manfred riem <manfred.riem_at_oracle.com>
Date: Fri, 20 Mar 2015 12:37:53 -0500

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
> <mailto: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
> <mailto: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 <tel:%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 <mailto: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 <mailto: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 <mailto: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 <tel:%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 <mailto: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
> <mailto: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 <tel:%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
> <mailto: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
>> <mailto: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
>> <mailto:arjan.tijms_at_gmail.com>>
>> wrote:
>>
>> Hi,
>>
>> On Thu, Mar 19, 2015 at 3:18
>> PM, Kito Mann
>> <kito.mann_at_virtua.com
>> <mailto: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
>> <tel:%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
>>
>>
>>
>>
>
>
>
>
>
>
>