G
Guest
Gast
Hallöle
Bei der Zusammenarbeit zwischen JSF und Spring muss man ja einen Variable-Resolver in der faces-config.xml anmelden.
Frage hierzu:
Ein Benutzer bearbeitet ein Formular. Diesem Formular liegt ein Managed-Bean mit dem Scope "Request" zu Grunde (das könnte z.B. der Controller sein). Sprich: Für jeden Benutzer, der das Formular abschickt, existiert eine Instanz dieses Managed-Beans. Und diesem Managed-Bean ist in der faces-config.xml ein Spring-Bean zugeordnet.
#{IrgendwasDaten} sei hierbei das Bean, das von Spring kommt, und das mit den Feldern des Formulars befüllt werden solle. Nun ist es ja so, dass Spring alle Beans als Singleton anlegt, d.h. es gibt systemweit nur eine Instanz (wenn ich mich nicht irre, und darum geht's *g*).
Wenn nun mehrere Benutzer gleichzeitig ein Formular abschicken, wird dann ein und das selbe Bean mit den Daten befüllt? Das würde bedeuten, dass der letzte Abschicker gewinnt, und seine Daten mehrfach in die Datenbank geschrieben werden (es gibt ja mehrere Controller - für jeden Benutzer einen - und der schreibe das Bean z.B. via Hibernate in die DB).
Oder ist Spring so schlau, und erkennt hier, dass man für jeden Request eine eigene Instanz von IrgendwasDaten anlegen muss, so dass jeder IrgendwasController eine solche erhält?
Bei der Zusammenarbeit zwischen JSF und Spring muss man ja einen Variable-Resolver in der faces-config.xml anmelden.
Frage hierzu:
Ein Benutzer bearbeitet ein Formular. Diesem Formular liegt ein Managed-Bean mit dem Scope "Request" zu Grunde (das könnte z.B. der Controller sein). Sprich: Für jeden Benutzer, der das Formular abschickt, existiert eine Instanz dieses Managed-Beans. Und diesem Managed-Bean ist in der faces-config.xml ein Spring-Bean zugeordnet.
Code:
<managed-bean>
<managed-bean-name>IrgendwasController</managed-bean-name>
<managed-bean-class>de.lalala.irgendwas.IrgendwasController</managed-bean-class>
<managed-bean-scope>request</managed-bean-name>
<managed-property>
<property-name>IrgendwasDaten</propertyName>
<value>#{IrgendwasDaten}</value>
</managed-property>
</managed-bean>
#{IrgendwasDaten} sei hierbei das Bean, das von Spring kommt, und das mit den Feldern des Formulars befüllt werden solle. Nun ist es ja so, dass Spring alle Beans als Singleton anlegt, d.h. es gibt systemweit nur eine Instanz (wenn ich mich nicht irre, und darum geht's *g*).
Wenn nun mehrere Benutzer gleichzeitig ein Formular abschicken, wird dann ein und das selbe Bean mit den Daten befüllt? Das würde bedeuten, dass der letzte Abschicker gewinnt, und seine Daten mehrfach in die Datenbank geschrieben werden (es gibt ja mehrere Controller - für jeden Benutzer einen - und der schreibe das Bean z.B. via Hibernate in die DB).
Oder ist Spring so schlau, und erkennt hier, dass man für jeden Request eine eigene Instanz von IrgendwasDaten anlegen muss, so dass jeder IrgendwasController eine solche erhält?