Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java] Manged-bean problemen met SWF en JSF

Pagina: 1
Acties:

  • Standeman
  • Registratie: November 2000
  • Laatst online: 14:08

Standeman

Prutser 1e klasse

Topicstarter
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 :
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.


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Ik ken het element <var /> niet. Wat wil je daarmee bereiken? Een conversational scoped bean?

Dan zou ik er zoiets van maken:
XML:
1
2
3
<bean id="myBean" class="com.company.tm.management.view.beans.MyBean" scope="conversation">
  <property name="tokenService" ref="tokenService" />
</bean>

Volgens mij kan dat gewoon met de DelegatingVariableResolver. Kan het hier niet uitproberen, dus het is een gok.

Fat Pizza's pizza, they are big and they are cheezy


  • Standeman
  • Registratie: November 2000
  • Laatst online: 14:08

Standeman

Prutser 1e klasse

Topicstarter
Ik heb het letterlijk uit de sellitem-jsf sample gerukt van SWF en het is nog een beetje klok / klepel verhaal voor mij.

damnn... ik zie net staan:
The flow begins by declaring a "sale" variable - an object of type Sale:
<var name="sale" class="org.springframework.webflow.samples.sellitem.Sale"/>
The formAction bean will use the sale variable for form binding and validation (see sellitem-beans.xml).
En ik gebruik helemaal geen formAction aangezien ik puur het controller aspect van SWF wil gebruiken 8)7

Bedankt, het werkt nu :)

[ Voor 5% gewijzigd door Standeman op 01-08-2007 15:41 ]

The ships hung in the sky in much the same way that bricks don’t.