users@javaserverfaces-spec-public.java.net

[jsr372-experts mirror] [jsr372-experts] Re: [527-InjectFacesContext] Support and review

From: Michael Müller <michael.mueller_at_mueller-bruehl.de>
Date: Tue, 07 Oct 2014 00:04:52 +0200

Am 06.10.2014 22:16, schrieb manfred riem:
> Hi Michael,
>
> Answers inline
>
> Regards,
> Manfred
>
> On 10/6/14, 3:08 PM, Michael Müller wrote:
>> Hi Manfred,
>>
>> I assume this shall work with any other context too? I'm thinking
>> especial of a custom defined context.
> Injection would work into any CDI managed bean within the limits set
> by the CDI specification.
>
>> And thinking of @SessionScoped or beans with a longer lifecycle:
>> During a session I might call a non-Faces Servlet, for example an
>> upload bean (although JSF offers upload, I prefer a JavaScript
>> controlled upload by XMLHttpRequest or iFrame to show a progress bar,
>> cancel button, and more). And I need to access some other backing
>> beans. It would be much easier to perform such an access if it would
>> be possible to inject a FacesContext in such a Servlet. Although
>> there is no call to the Faces Servlet, I guess it would be possible
>> to inject the same context as available for a @SessionScoped bean.
> Unfortunately it actually would not as the non-Faces servlet does not
> setup the FacesContext.
Yes, that is true. But which FacesContext would you inject into a
@SessionScoped bean? As far as I know, the context is build with every
request to the FacesServlet. Usuall, you can't inject a bean with a
shorter lifecycle into one with a longer one. I assume, the injected
variable will preserve the initial context or it's contend will be
renewed with every request? Anyhow, it is longer accessible than a
single request. And my idea is to inject it into a different servlet of
the same session (if context is preserved). If the content of the
injected field is internally renew with every request, than it woul be
usefull to create something similar to a faces context.

Accessing the session map via
httpUtil.getRequest().getSession().getAttribute(xxx) is possible, but it
would be more convenient to access it similar to
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().
Or to provide a more simpler way to access the application, and, and, and.
Not a real FacesContext, but something with a similar behavior. Got my
point?

>> Herzliche Grüße - Best Regards,
>>
>> Michael Müller
>>
>> Web Development with Java and JSF: https://leanpub.com/jsf
>