myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Struberg <strub...@yahoo.de>
Subject Re: @ViewAccessScoped PreDestroy
Date Fri, 24 Jun 2011 18:56:41 GMT
Just for making this clear: we do _not_ suggest to use a plain <a href...>! Please use
<h:outputLink> instead (since JSF-2>.
This will render a <a href> for you but will also manage all the view params if you
like, etc. You can also add <f:param> children to pass parameters without having to
do some string juggling.

LieGrue,
strub

--- On Fri, 6/24/11, Gerhard Petracek <gerhard.petracek@gmail.com> wrote:

> From: Gerhard Petracek <gerhard.petracek@gmail.com>
> Subject: Re: @ViewAccessScoped PreDestroy
> To: "MyFaces Discussion" <users@myfaces.apache.org>
> Date: Friday, June 24, 2011, 5:46 PM
> hi pieter,
> 
> to avoid side-effects you should always use such jsf
> components.
> if you really have to use a plain link - the solution would
> be:
>    <a
> href="#{facesContext.externalContext.request.contextPath}/myPage.xhtml?windowId=#{currentWindow.id}">My
> Page</a>
> that's for sure more verbose than the version with h:link:
>    <h:link value="My Page"
> outcome="myPage"/>
> 
> @ViewScoped:
> besides some other disadvantages, that's the behaviour
> specified by jsf2.
> codi doesn't implement this scope itself. it just provides
> an adapter for
> cdi which delegates to the default implementation of jsf2.
> so it's better to use one of the scopes which are
> completely implemented by
> codi itself.
> 
> regards,
> gerhard
> 
> http://www.irian.at
> 
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
> 
> Professional Support for Apache MyFaces
> 
> 
> 2011/6/24 Pieter Martin <pieter.martin@gmail.com>
> 
> > Hi,
> >
> > Thanks for the reply and demo.
> >
> > I see the difference is that I have been navigating to
> the new pages via a
> > browser url get request.
> > I tried it now with a <h:link /> and then the
> @PreDestroy gets called.
> >
> > Is it suppose to work via get request?
> >
> > Thanks
> > Pieter
> >
> >
> >
> >
> > On 24/06/2011 19:01, Gerhard Petracek wrote:
> >
> >> hi pieter,
> >>
> >> based on the archetype i created a demo [1].
> >> i just added a view-access-scoped bean and
> accessed it on the second page.
> >> in the @PostConstruct callback a message gets
> added which you can see on
> >> the
> >> page.
> >> the @PreDestroy callback writes the message to the
> console because the
> >> bean
> >> gets destroyed>after<  the rendering
> process (if it wasn't accessed by the
> >> new page) - so you won't see a message on the page
> (if you would add one
> >> like in the @PostConstruct callback).
> >>
> >> you can start the demo e.g. with:
> >> mvn clean jetty:run-exploded -PjettyConfig
> >>
> >> regards,
> >> gerhard
> >>
> >> [1]
> >> http://people.apache.org/~**gpetracek/myfaces/codi/demos/**
> >> view-access-scope-demo.zip<http://people.apache.org/~gpetracek/myfaces/codi/demos/view-access-scope-demo.zip>
> >>
> >> http://www.irian.at
> >>
> >> Your JSF powerhouse -
> >> JSF Consulting, Development and
> >> Courses in English and German
> >>
> >> Professional Support for Apache MyFaces
> >>
> >>
> >> 2011/6/24 Pieter Martin<pieter.martin@gmail.com**>
> >>
> >>  Hi,
> >>>
> >>> I have tested as you mentioned but the
> @PreDestroy still does not get
> >>> called.
> >>>
> >>> I am using the jsf application as generated
> with the maven archetype.
> >>>
> >>> I am however running it in embedded jetty
> mode, i.e. view a main method.
> >>> I have a META-INF/beans.xml in the
> src/main/resources dir.
> >>>
> >>> page1 = helloWorld.xhtml which references the
> WindowScoped
> >>> HelloWorldController
> >>> page2 = testViewAccessScoped.xhtml which
> references a ViewAccessScoped
> >>> bean
> >>> - PostConstruct called
> >>> page1 = helloWorld.xhtml, ViewAccessScoped -
> PreDestroy not called, as
> >>> expected
> >>> page1, again = helloWorld.xhtml,
> ViewAccessScoped - PreDestroy not
> >>> called,
> >>> expected it to be called
> >>> page3 = helloWorld2.xhtml which references the
> WindowScoped
> >>> HelloWorldController - PreDestroy not called,
> expected it to be called
> >>> page4 = testViewAccessScoped2.xhtml which
> references a different
> >>> ViewAccessScoped bean - PostConstruct called,
> PreDestroy not called
> >>> page2 = testViewAccessScoped.xhtml which
> references a ViewAccessScoped
> >>> bean
> >>> - PostConstruct called and PreDestroy called
> on page4's ViewAccessScoped
> >>> bean
> >>>
> >>>
> >>> I can only get PreDestroy called if I navigate
> from a ViewAccessScoped
> >>> directly to another ViewAccessScoped page.
> >>>
> >>> Using @ViewScoped I can not get PreDestroyed
> to be called at all.
> >>> Using @ViewScoped if I F5 on the page
> @PostConstruct is called everytime
> >>> and @PreDestroy never
> >>>
> >>> Thanks
> >>> Pieter
> >>>
> >>>
> >>>
> >>> On 23/06/2011 23:11, Gerhard Petracek wrote:
> >>>
> >>>  hi pieter,
> >>>>
> >>>> first of all welcome @ myfaces!
> >>>> as long as the bean is referenced by a
> page - the bean will be available
> >>>> for
> >>>> the next page. after rendering the first
> page which doesn't use the
> >>>> view-access scoped bean it will be
> destroyed (that's independent of
> >>>> other
> >>>> beans).
> >>>>
> >>>> regards,
> >>>> gerhard
> >>>>
> >>>> http://www.irian.at
> >>>>
> >>>> Your JSF powerhouse -
> >>>> JSF Consulting, Development and
> >>>> Courses in English and German
> >>>>
> >>>> Professional Support for Apache MyFaces
> >>>>
> >>>>
> >>>> 2011/6/23 Pieter Martin<pieter.martin@gmail.com****>
> >>>>
> >>>>  Hi,
> >>>>
> >>>>> I trying to use @ViewAccessScoped
> beans but am not getting the expected
> >>>>> behavior.
> >>>>>
> >>>>> I notice that @PreDestroy only gets
> called when I navigate from a page
> >>>>> using a particular ViewAccessScoped
> bean to another page using a
> >>>>> different ViewAccessScoped bean.
> >>>>>
> >>>>> I expected @PreDestroy to be called
> whenever I navigate to a different
> >>>>> view. i.e. if a navigate from a page
> with a ViewAccessScoped bean to a
> >>>>> page with a ApplicationScoped or
> WindowScoped backing bean @PreDestroy
> >>>>> does not get called.
> >>>>>
> >>>>> Is this a bug?
> >>>>>
> >>>>> I am using CODI version 0.9.5 and
> MYFACES 2.1.1
> >>>>>
> >>>>> Thanks
> >>>>> Pieter
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >
> 

Mime
View raw message