[jboss-jira] [JBoss JIRA] (WFLY-2611) Unify JSF action listener and CDI integration

Tomas Remes (JIRA) issues at jboss.org
Fri Jan 31 09:03:29 EST 2014


     [ https://issues.jboss.org/browse/WFLY-2611?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tomas Remes updated WFLY-2611:
------------------------------

              Summary: Unify JSF action listener and CDI integration  (was: Support CDI injection in various JSF artifacts)
             Assignee: Farah Juma  (was: Stuart Douglas)
    Affects Version/s: 8.0.0.CR1
          Description: 
There are three ways, how can user specify custom JSF action listener:

1. Method binding - with actionListener param. This case is ok, meaning CDI injection and interceptor works for given method/bean.

2. Providing custom implementation - <f:actionListener type="org.jboss.jsf.listeners.MyActionListener"/>. In this case CDI doesn't work at all for processAction method of given class. 

3. Defining in faces-config - in this case CDI injection works, but interceptor is not executed. 

Producer available at https://github.com/tremes/javaee7-samples/tree/cdi-testing/jsf/jsf-listeners-injection. Test can be executed with "mvn clean test -Pwildfly-managed-arquillian" or "mvn clean test -Pwildfly-remote-arquillian" and IMHO all should pass.
 

  was:
If I understand correctly to the subchapter "5.4.1
JSF Managed Classes and Java EE Annotations" of JSF 2.2 specification, there should be opportunity to use a lot of (and not only) CDI annotations in various JSF artifacts (ActionListener, SystemEventListener, etc. - for full list, please see the spec). 
So far I tried locally this (will be filling the table during time):

||JSF artifact||CDI Injection||
|javax.el.ELResolver|works|
|javax.faces.application.ApplicationFactory|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.application.NavigationHandler|works|
|javax.faces.application.ResourceHandler|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.application.StateManager|works (however there is question about availability of injected instances in constructor of this custom delegating object|
|javax.faces.component.visit.VisitContextFactory|works|
|javax.faces.context.ExceptionHandlerFactory|works|
|javax.faces.context.ExternalContextFactory|works|
|javax.faces.context.FacesContextFactory|works|
|javax.faces.context.FlashFactory|works|
|javax.faces.context.PartialViewContextFactory|works|
|javax.faces.event.ActionListener|works only when specified also in faces-config|
|javax.faces.event.SystemEventListener|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.lifecycle.ClientWindowFactory|works|
|javax.faces.lifecycle.LifecycleFactory|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.lifecycle.PhaseListener|works|
|javax.faces.render.RenderKitFactory|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.view.ViewDeclarationLanguageFactory|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.view.facelets.FaceletCacheFactory|works only for ApplicationScoped and Dependent scoped beans - probably reasonable ?|
|javax.faces.view.facelets.TagHandlerDelegateFactory|works|
 


    
> Unify JSF action listener and CDI integration
> ---------------------------------------------
>
>                 Key: WFLY-2611
>                 URL: https://issues.jboss.org/browse/WFLY-2611
>             Project: WildFly
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: CDI / Weld, JSF
>    Affects Versions: 8.0.0.CR1
>            Reporter: Tomas Remes
>            Assignee: Farah Juma
>
> There are three ways, how can user specify custom JSF action listener:
> 1. Method binding - with actionListener param. This case is ok, meaning CDI injection and interceptor works for given method/bean.
> 2. Providing custom implementation - <f:actionListener type="org.jboss.jsf.listeners.MyActionListener"/>. In this case CDI doesn't work at all for processAction method of given class. 
> 3. Defining in faces-config - in this case CDI injection works, but interceptor is not executed. 
> Producer available at https://github.com/tremes/javaee7-samples/tree/cdi-testing/jsf/jsf-listeners-injection. Test can be executed with "mvn clean test -Pwildfly-managed-arquillian" or "mvn clean test -Pwildfly-remote-arquillian" and IMHO all should pass.
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list