Op het moment ben ik bezig om JSF met SWF (Spring Web Flow) te integreren. Ik schiet aardig op, maar er is één ding wat niet wil lukken. Op de een of andere manier krijg ik het niet voor elkaar om een managed-bean te injecteren met de nodige objecten.
Wanneer ik mijn applicatie start kan ik de managed-bean wel aanroepen, maar blijkt dat het object verstoken is van de services die ik nodig heb (welke geinjecteerd dienen te worden).
web.xml met een verwijzing naar :
Mijn faces-config.xml ziet er alsvolgt uit
Als laatste, de webflow-config.xml en my-flow.xml waar ik de bean als variable heb opgenomen:
Ik denk dat mijn probleem voornamelijk ligt in de scope waarin de bean wordt aangemaakt. Wanneer ik in mijn jsp file myBean probeer te gebruiken blijkt dat de property tokenService null is. Ik vermoed dat myBean opnieuw is geinstancieerd en dat dus de managed-bean configuratie in faces-config.xml of niet wordt uitgevoerd of dat de bean in de verkeerde scope zit.
Ik heb ook geprobeerd om de bean als gewone Spring bean te declareren in in een eigen file (zoals applicationContext.xml), maar daar kreeg ik hetzelfde resultaat.
Wanneer ik kijk naar de reference documentatie op springframework.org wordt in het sale object niets geinjecteerd en is de <var../> definite in *-flow.xml voldoende om het object beschikbaar te maken.
Heeft iemand enig idee hoe ik een managed-bean configureer met SWF en JSF?
Wanneer ik mijn applicatie start kan ik de managed-bean wel aanroepen, maar blijkt dat het object verstoken is van de services die ik nodig heb (welke geinjecteerd dienen te worden).
web.xml met een verwijzing naar :
XML:
1
2
3
4
5
6
7
| <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:com/company/tm/applicationContext.xml <!-- staan DAO's en services in geconfigureerd --> /WEB-INF/webflow-config.xml <!-- verwijzing naar de flow definities --> </param-value> </context-param> |
Mijn faces-config.xml ziet er alsvolgt uit
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <application> <navigation-handler> org.springframework.webflow.executor.jsf.FlowNavigationHandler </navigation-handler> <variable-resolver> org.springframework.web.jsf.DelegatingVariableResolver </variable-resolver> </application> <lifecycle> <phase-listener> org.springframework.webflow.executor.jsf.FlowPhaseListener </phase-listener> </lifecycle> <managed-bean> <description>My managed bean</description> <managed-bean-name>myBean</managed-bean-name> <managed-bean-class> com.company.tm.management.view.beans.MyBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>tokenService</property-name> <value>#{tokenService}</value> <!-- verwijzing naar applicationContext.xml --> </managed-property> </managed-bean> |
Als laatste, de webflow-config.xml en my-flow.xml waar ik de bean als variable heb opgenomen:
XML:
1
2
3
4
5
| <flow:executor id="flowExecutor" registry-ref="flowRegistry"/> <!-- Creates the registry of flow definitions for this application --> <flow:registry id="flowRegistry"> <flow:location path="/WEB-INF/flows/my-flow.xml" /> </flow:registry> |
XML:
1
2
3
| <var name="myBean" class="com.company.tm.management.view.beans.MyBean" scope="conversation" /> |
Ik denk dat mijn probleem voornamelijk ligt in de scope waarin de bean wordt aangemaakt. Wanneer ik in mijn jsp file myBean probeer te gebruiken blijkt dat de property tokenService null is. Ik vermoed dat myBean opnieuw is geinstancieerd en dat dus de managed-bean configuratie in faces-config.xml of niet wordt uitgevoerd of dat de bean in de verkeerde scope zit.
Ik heb ook geprobeerd om de bean als gewone Spring bean te declareren in in een eigen file (zoals applicationContext.xml), maar daar kreeg ik hetzelfde resultaat.
Wanneer ik kijk naar de reference documentatie op springframework.org wordt in het sale object niets geinjecteerd en is de <var../> definite in *-flow.xml voldoende om het object beschikbaar te maken.
Heeft iemand enig idee hoe ik een managed-bean configureer met SWF en JSF?
The ships hung in the sky in much the same way that bricks don’t.