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 <[email protected]>: > 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 <[email protected]> > 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 <[email protected]>: >> >>> 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 >>> >> >> >
