2010-05-14 7 views
2

Cette question m'inquiète depuis quelque temps. Mon application utilise ICEFaces pour notre infrastructure d'interface utilisateur et Spring 2.5 pour l'injection de dépendances. En outre, Spring conserve tous nos beans backing, et non le framework ICEFaces, donc notre faces-config est vide.Comment transmettre des paramètres entre des haricots à la demande

La navigation n'est même pas vraiment gérée par les règles de navigation. Nous effectuons des redirections manuelles vers de nouvelles fenêtres en utilisant window.open.

Tous nos beans sont définis dans notre fichier appContext comme ayant une portée de requête. J'ai la page ABC qui est soutenue par BackingBeanABC. L'intérieur de ce haricot support, j'ai un paramètre dire:

private Order order; 

J'ai alors la page XYZ soutenu par BackingBeanXYZ. Quand je redirige de la page ABC à la page XYZ, je veux transférer la propriété 'order' d'ABC à XYZ. Le problème est que tout est à portée de requête et que j'effectue une redirection, je perds la valeur de 'description'.

Il doit y avoir un moyen plus simple de passer des objets entre des beans dans une portée de requête lors d'une redirection. Quelqu'un peut-il aider à résoudre ce problème?

Répondre

1

La portée de la session résout le problème.

Vous pouvez en savoir plus à ce sujet dans reference documentation du printemps.

Une autre alternative consiste à définir l'objet de commande directement sur l'objet HttpSession. J'aurais préféré cela et seulement vos services, contrôleurs et dépôts gérés par Spring.

+0

Oui, mais je ne veux pas l'utiliser en option. Tous les managedbeans dans notre application sont request-scope. – sma

+0

Pourquoi? Est-ce que vous essayez de laisser un haricot à portée de requête se comporter comme un haricot à portée de session? – Espen

+0

Je sais que Session fonctionne ici, mais ce n'est pas un scénario fou que j'ai ici. Ce dont j'ai besoin, c'est d'une portée plus longue que la demande, mais inférieure à la session. C'est sur quoi Spring Webflow est construit et sur lequel la portée de Conversation de Seam est construite (ni l'un ni l'autre ne me sont permis - ne demandez pas). – sma

1

Créez un bean tronqué de session que les beans de la portée de la requête peuvent référencer via le FacesContext.

+0

Je l'ai fait il y a un certain temps et j'ai été vilipendé pour ça. Je pourrais y revenir. Cela semblait fonctionner correctement. – sma

+0

Vilified pour mettre des données de session dans un contexte de session? Bon temps! – Naganalf

Questions connexes