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
>>>
>>
>>
>

Reply via email to