deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gerhard Petracek <gerhard.petra...@gmail.com>
Subject Re: migrate from MyFaces CODI to DeltaSpike == WELD-001303: No active contexts for scope type org.apache.deltaspike.core.api.scope.WindowScoped
Date Tue, 02 Feb 2016 10:00:44 GMT
fyi:
i just pushed a preview to [1].
(in some weeks it will be available at [2].)

[1] contains a new version of IdeaImportServlet which shows something
similar.

regards,
gerhard

[1] http://s.apache.org/rd
[2] https://github.com/CDIatWork/IdeaFork

http://www.irian.at

Your JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache
MyFaces, DeltaSpike and OpenWebBeans



2016-02-02 1:56 GMT+01:00 Stephen More <stephen.more@gmail.com>:

> Thanks, I now have a servlet working as expected.
>
> For anyone else here is some psuedo code:
>
> @Inject
> private org.apache.deltaspike.core.spi.scope.window.WindowContext
> windowContext;
>
> protected void service(HttpServletRequest request,HttpServletResponse
> response) throws ServletException, IOException
> {
> windowContext.activateWindow( "abc123" );
> TabInfo tabInfo =
>
> org.apache.deltaspike.core.api.provider.BeanProvider.getContextualReference(
> "tabInfo", false, TabInfo.class );
> tabInfo.setImportantInfo( ii );
>
> javax.servlet.RequestDispatcher dispatcher =
> getServletContext().getRequestDispatcher( "/detail.jsf?dswid=abc123" );
> dispatcher.forward( request, response );
> }
>
>
> -Thanks again
>
>
> On Mon, Feb 1, 2016 at 6:27 PM, Gerhard Petracek <gpetracek@apache.org>
> wrote:
>
> > hi stephen,
> >
> > in your special case (= an own servlet) you need to restore the window-id
> > on your own -> use the restored value for WindowContext#activateWindow.
> > (how you can restore it depends on the client-window-strategy you are
> > using.
> > with the default-strategy you can use HttpServletRequest#getParameter and
> > "dswid" as parameter-name.)
> >
> > if the window-id doesn't exist already (= first/initial get-request), you
> > can generate and use any random value.
> > (in this case please also have a look at deltaspike.window-id.max_length
> -
> > see JsfBaseConfig)
> >
> > regards,
> > gerhard
> >
> >
> >
> > 2016-02-01 23:49 GMT+01:00 Stephen More <stephen.more@gmail.com>:
> >
> > > I am not able to get this to work - in my servlet I have tried:
> > >
> > > A.
> > > @Inject
> > > private org.apache.deltaspike.core.spi.scope.window.WindowContext
> > > windowContext;
> > >
> > > windowContext.getCurrentWindowId() is null;
> > >
> > >
> > > B.
> > > org.apache.deltaspike.core.api.provider.DependentProvider dp =
> > > org.apache.deltaspike.core.api.provider.BeanProvider.getDependent(
> > > "tabInfo" );
> > > Object obj = dp.get();
> > > log.info( "Object: " + obj );
> > >
> > > org.jboss.weld.context.ContextNotActiveException: WELD-001303: No
> active
> > > contexts for scope type
> org.apache.deltaspike.core.api.scope.WindowScoped
> > >
> > > C.
> > > TabInfo tabInfo =
> > >
> >
> org.apache.deltaspike.core.api.provider.BeanProvider.getContextualReference(
> > > "tabInfo", false, TabInfo.class );
> > > tabInfo.setImportantInfo( ii );
> > >
> > >
> > > org.jboss.weld.context.ContextNotActiveException: WELD-001303: No
> active
> > > contexts for scope type
> org.apache.deltaspike.core.api.scope.WindowScoped
> > >
> > >
> > >
> > > -- I am running this in Tomcat not a full blown J2EE AS - could that be
> > > the issue ?
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On Mon, Feb 1, 2016 at 4:04 PM, Gerhard Petracek <gpetracek@apache.org
> >
> > > wrote:
> > >
> > >> hi stephen,
> > >>
> > >> codi restores the window-id once it's needed and ds restores it e.g.
> at
> > >> the beginning of a faces-request.
> > >> ->
> > >> inject and use WindowContext (or use
> BeanProvider#getContextualReference
> > >> or even better in this case BeanProvider#getDependent).
> > >> (WindowContext allows you to manage the window-id manually.)
> > >>
> > >> regards,
> > >> gerhard
> > >>
> > >>
> > >>
> > >> 2016-02-01 21:32 GMT+01:00 Stephen More <stephen.more@gmail.com>:
> > >>
> > >>> I have a MyFaces CODI application that utilizes WindowScoped beans.
(
> > >>> Session per tab - so thankful for that. )
> > >>>
> > >>> I have been able to create url links that navigate to jsf pages
> using a
> > >>> servlet. (
> > >>>
> > >>>
> >
> http://balusc.omnifaces.org/2006/06/communication-in-jsf.html#AccessingTheFacesContextInsideHttpServletOrFilter
> > >>> )
> > >>>
> > >>> protected void service(HttpServletRequest request,HttpServletResponse
> > >>> response) throws ServletException, IOException
> > >>> {
> > >>> javax.faces.context.FacesContext context = FacesUtil.getFacesContext(
> > >>> request, response );
> > >>> TabInfo tabInfo = context.getApplication().evaluateExpressionGet(
> > >>> context,
> > >>> "#{tabInfo}", TabInfo.class );
> > >>> tabInfo.setImportantInfo( ii );
> > >>>
> > >>> javax.servlet.RequestDispatcher dispatcher =
> > >>> getServletContext().getRequestDispatcher( "/detail.jsf" );
> > >>> dispatcher.forward( request, response );
> > >>> }
> > >>>
> > >>> Everything has been working flawlessly.
> > >>>
> > >>> When I try to achieve the exact same feature using DeltaSpike,
> tabInfo
> > >>> will
> > >>> come back null.
> > >>>
> > >>> When I try:
> > >>>         TabInfo tabInfo = (TabInfo)application.createValueBinding(
> > >>> "#{tabInfo}" ).getValue( context );
> > >>> the following will show up in error logs:
> > >>>        "org.jboss.weld.context.ContextNotActiveException:
> WELD-001303:
> > No
> > >>> active contexts for scope type
> > >>> org.apache.deltaspike.core.api.scope.WindowScoped"
> > >>>
> > >>>
> > >>> I appreciate any help you can provide.
> > >>> -Thanks
> > >>>
> > >>
> > >>
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message